java基础-多线程-线程组
2024-09-17 23:06:39
线程组
* Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
* 默认情况下,所有的线程都属于主线程组。
* public final ThreadGroup getThreadGroup()//通过线程对象获取他所属于的组
* public final String getName()//通过线程组对象获取他组的名字
* 我们也可以给线程设置分组
* 1,ThreadGroup(String name) 创建线程组对象并给其赋值名字
* 2,创建线程对象
* 3,Thread(ThreadGroup?group, Runnable?target, String?name)
* 4,设置整组的优先级或者守护线程
* 线程组的使用,默认是主线程组
* Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
* 默认情况下,所有的线程都属于主线程组。
* public final ThreadGroup getThreadGroup()//通过线程对象获取他所属于的组
* public final String getName()//通过线程组对象获取他组的名字
* 我们也可以给线程设置分组
* 1,ThreadGroup(String name) 创建线程组对象并给其赋值名字
* 2,创建线程对象
* 3,Thread(ThreadGroup?group, Runnable?target, String?name)
* 4,设置整组的优先级或者守护线程
* 线程组的使用,默认是主线程组
public class Demo4_ThreadGroup {
/**
* @param args
* ThreadGroup
*/
public static void main(String[] args) {
//demo1();
ThreadGroup tg = new ThreadGroup("我是一个新的线程组"); //创建新的线程组
MyRunnable mr = new MyRunnable(); //创建Runnable的子类对象
Thread t1 = new Thread(tg, mr, "张三"); //将线程t1放在组中
Thread t2 = new Thread(tg, mr, "李四"); //将线程t2放在组中
System.out.println(t1.getThreadGroup().getName()); //获取组名
System.out.println(t2.getThreadGroup().getName());
tg.setDaemon(true);// ***********************************************可以将一个组的线程一块处理
}
* @param args
* ThreadGroup
*/
public static void main(String[] args) {
//demo1();
ThreadGroup tg = new ThreadGroup("我是一个新的线程组"); //创建新的线程组
MyRunnable mr = new MyRunnable(); //创建Runnable的子类对象
Thread t1 = new Thread(tg, mr, "张三"); //将线程t1放在组中
Thread t2 = new Thread(tg, mr, "李四"); //将线程t2放在组中
System.out.println(t1.getThreadGroup().getName()); //获取组名
System.out.println(t2.getThreadGroup().getName());
tg.setDaemon(true);// ***********************************************可以将一个组的线程一块处理
}
public static void demo1() {
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr, "张三");
Thread t2 = new Thread(mr, "李四");
ThreadGroup tg1 = t1.getThreadGroup();
ThreadGroup tg2 = t2.getThreadGroup();
System.out.println(tg1.getName()); //默认的是主线程
System.out.println(tg2.getName());
}
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr, "张三");
Thread t2 = new Thread(mr, "李四");
ThreadGroup tg1 = t1.getThreadGroup();
ThreadGroup tg2 = t2.getThreadGroup();
System.out.println(tg1.getName()); //默认的是主线程
System.out.println(tg2.getName());
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
for(int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName() + "...." + i);
}
}
public void run() {
for(int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName() + "...." + i);
}
}
最新文章
- python serial 获取所有的串口名称
- 利用免费cdn加速webpack单页应用
- Zero to One读后感
- HDU 4734 F(x)
- EasyUI Combobox设定默认值
- Java事务处理全解析(三)——丑陋的案例
- android隐式intent使用场景解析
- ReactiveCocoa总结
- dnsmasq 设置自动获取主机名
- day 08 文件操作
- Scala-Unit6-final/type关键字、样例类&;样例对象
- java动手动脑2
- describe命令
- Throwable vs Exception
- Android JNI与多线程
- github安装k8s
- css控制两个表格的边线重合
- TypeEvaluator 估值器 抛物线
- 多媒体开发之rtp 打包发流--- 从h264中获取分辨率
- [Erlang01] 使用catch与try catch避免嵌套nest_case