1定义一个类,实现Runnable接口。
public class MyRunnable implements Runnable {
// 线程执行体
@Override
public void run() {
// 提示线程名称等相关信息
Systemoutprintln("线程名称:" + ThreadcurrentThread()getName());
Systemoutprintln("线程ID:" + ThreadcurrentThread()getId());
Systemoutprintln("线程状态:" + ThreadcurrentThread()getState());
}
}
2、创建Runnable接口实现类的实例。
MyRunnable runnable = new MyRunnable();
3、创建Thread类的实例,并将Runnable接口实现类的实例作为参数传递给Thread类的构造方法。
Thread thread = new Thread(runnable);
4、调用Thread类的start()方法启动线程。
threadstart();
在线程内提示线程名称等相关信息,可以在Runnable接口实现类的run()方法中使用Thread类的currentThread()方法来获取当前线程的信息,然后通过getName()、getId()和getState()方法来获取线程名称、线程ID和线程状态,并打印到控制台。
public class Main { public static void main(String[] args) {
// 创建Runnable接口实现类的实例
MyRunnable runnable = new MyRunnable();
// 创建Thread类的实例,并将Runnable接口实现类的实例作为参数传递给Thread类的构造方法
Thread thread = new Thread(runnable);
// 调用Thread类的start()方法启动线程
threadstart();
}
}
class MyRunnable implements Runnable {
// 线程执行体
@Override
public void run() {
// 提示线程名称等相关信息
Systemoutprintln("线程名称:" + ThreadcurrentThread()getName());
Systemoutprintln("线程ID:" + ThreadcurrentThread()getId());
Systemoutprintln("线程状态:" + ThreadcurrentThread()getState());
}
}
1一个线程的集合,也可包含其他线程组
2线程组构成一棵树,除了初始化线程组外,每一个线程组都有一个父线程组
3允许线程访问有关自己的线程组的信息,但不能访问其父线程组或其他线程组的信息
4ThreadGroup类只能获得处于运行状态的线程
常用方法:
activeCount() 返回线程组中活动线程的估计数
activeGroupCount() 返回线程组中活动线程组的估计数
enumerate(Thread[] list,boolean recurse) 把此线程组中所有活动线程复制到指定数组中
enumerate(ThreadGroup[] list,boolean recurse) 把此线程组中所有活动子组的引用复制到指定的数组中
enumerate(Thread[] list) 把此线程组中所有活动线程复制到指定数组中
enumerate(ThreadGroup[] list) 把此线程组中所有活动子组的引用复制到指定的数组中
getName() 返回此线程组的名称
getParent() 返回此线程组的父线程组
代码例子:
package comxhjthread;
import javautilArrayList;
import javautilList;
/
查看JVM中的线程 获取线程名和子线程组
@author XIEHEJUN
/
public class CheckThreadJVM {
/
获取根线程组
@return
/
public static ThreadGroup getRootThreadGroup() {
ThreadGroup rootGroup = ThreadcurrentThread()getThreadGroup();
while (true) {
if (rootGroupgetParent() != null) {
rootGroup = rootGroupgetParent();
} else {
break;
}
}
return rootGroup;
}
/
获取线程组中的线程名
@param group
@return
/
public static List<String> getThreadsName(ThreadGroup group) {
List<String> threadList = new ArrayList<String>();
Thread[] threads = new Thread[groupactiveCount()];
int count = groupenumerate(threads, false);
for (int i = 0; i < count; i++) {
threadListadd(groupgetName() + "线程组: " + threads[i]getName());
}
return threadList;
}
/
获取根数组下的子数组
@param group
@return
/
public static List<String> getThreadGroup(ThreadGroup group) {
List<String> threadList = getThreadsName(group);
ThreadGroup[] threads = new ThreadGroup[groupactiveGroupCount()];
int count = groupenumerate(threads, false);
for (int i = 0; i < count; i++) {
threadListaddAll(getThreadsName(threads[i]));
}
return threadList;
}
public static void main(String[] args) {
for (String string : getThreadGroup(getRootThreadGroup())) {
Systemoutprintln(string);
}
}
}
以上就是关于简答题实现runnable接口创建线程并在线程内提示线程名称等相关信息全部的内容,包括:简答题实现runnable接口创建线程并在线程内提示线程名称等相关信息、如何查看jvm的"active thread、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)