ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE-20.1.4【线程控制(sleep、join、daemon)】

2021-06-10 09:35:16  阅读:216  来源: 互联网

标签:20.1 daemon join int void lesson1 线程 Override public


 1 package day11.lesson1.p4;
 2 
 3 /*
 4 1.5 线程控制
 5 
 6     static void sleep(long millis) 使当前正在执行的线程停留(暂停执行)指定的毫秒数
 7     void join() 等待这个线程死亡
 8     void setDaemon(boolean on) 将此线程标记为守护线程,当运行的线程都是守护线程时,Java虚拟机将退出
 9 
10  */
11 public class ThreadSleep extends Thread{
12     @Override
13     public void run() {
14         for (int i=0; i<20; i++){
15             System.out.println(getName() + ":" + i);
16 
17             try {
18                 Thread.sleep(1000); //
19             } catch (InterruptedException e) {
20                 e.printStackTrace();
21             }
22         }
23     }
24 }
25 
26 class ThreadSleepDemo{
27     public static void main(String[] args) {
28         ThreadSleep ts1 = new ThreadSleep();
29         ThreadSleep ts2 = new ThreadSleep();
30         ThreadSleep ts3 = new ThreadSleep();
31 
32         ts1.setName("曹操");
33         ts2.setName("刘备");
34         ts3.setName("孙权");
35 
36         ts1.start();
37         ts2.start();
38         ts3.start();
39         /*
40         设置sleep()之前输出:三者混杂且随机
41         设置sleep()之后输出:三者均衡
42             曹操:0
43             孙权:0
44             刘备:0
45             曹操:1
46             孙权:1
47             刘备:1
48             曹操:2
49             刘备:2
50             孙权:2
51             刘备:3
52             孙权:3
53             曹操:3
54             孙权:4
55             曹操:4
56             刘备:4
57          */
58     }
59 }
 1 package day11.lesson1.p4;
 2 
 3 /*
 4 void join() 等待这个线程死亡
 5 例:两位皇子争夺皇位,需等待老皇帝驾崩
 6  */
 7 public class ThreadJoin extends Thread{
 8     @Override
 9     public void run() {
10         for (int i=0; i<20; i++){
11             System.out.println(getName() + ":" + i);
12         }
13     }
14 }
15 
16 class ThreadJoinDemo{
17     public static void main(String[] args) {
18         ThreadJoin tj1 = new ThreadJoin();
19         ThreadJoin tj2 = new ThreadJoin();
20         ThreadJoin tj3 = new ThreadJoin();
21 
22         tj1.setName("老皇帝");
23         tj2.setName("皇子1号");
24         tj3.setName("皇子2号");
25 
26         tj1.start();
27         try {
28             tj1.join(); //tj1线程执行完毕后,tj2和tj3线程才能执行
29         } catch (InterruptedException e) {
30             e.printStackTrace();
31         }
32 
33         tj2.start();
34         tj3.start();
35     }
36 }
 1 package day11.lesson1.p4;
 2 
 3 /*
 4 void setDaemon(boolean on) 将此线程标记为守护线程,当运行的线程都是守护线程时,Java虚拟机将退出
 5 例:桃园三结义不求同年同月同日生,但求同年同月同日死,假如刘备没了,则关张也不再苟活
 6  */
 7 public class ThreadDaemon extends Thread{
 8     @Override
 9     public void run() {
10         for (int i=0; i<100; i++){
11             System.out.println(getName() + ":" + i);
12         }
13     }
14 }
15 
16 class ThreadDaemonDemo{
17     public static void main(String[] args) {
18         ThreadDaemon td1 = new ThreadDaemon();
19         ThreadDaemon td2 = new ThreadDaemon();
20 
21         td1.setName("关羽");
22         td2.setName("张飞");
23 
24         //设置主线程为刘备
25         Thread.currentThread().setName("刘备");
26         //设置守护线程
27         td1.setDaemon(true);
28         td2.setDaemon(true);
29 
30         td1.start();
31         td2.start();
32 
33         for (int i=0; i<10; i++){
34             System.out.println(Thread.currentThread().getName() + ":" + i);
35         }
36     }
37 }

 

标签:20.1,daemon,join,int,void,lesson1,线程,Override,public
来源: https://www.cnblogs.com/yppah/p/14869754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有