java线程sleep(),join()和yield方法

join()方法示例如下:

 1 public class Thread1{
 2     public static void main(String[] args) {
 3         TestThread t=new TestThread("t");
 4         t.start();
 5         try{
 6             t.join();    //类似于调用run()方法.
 7         }catch (InterruptedException e) {
 8
 9         }
10         for (int i=0;i<=10 ;i++ ) {
11             System.out.println("i am main Thread!!");
12         }
13     }
14 }
15
16 class TestThread extends Thread{
17     public TestThread(String s){
18         super(s);
19     }
20     public void run(){
21         for (int i=0;i<=10;i++) {
22             System.out.println(" I‘m "+getName()+" Thread!!");
23             try{
24                 sleep(1000);    // sleep()必须catch Exception.
25             }catch (InterruptedException e) {
26                 return;
27             }
28         }
29     }
30 }

输出为:

 1 i‘m t Thread!!
 2 i‘m t Thread!!
 3 i‘m t Thread!!
 4 i‘m t Thread!!
 5 i‘m t Thread!!
 6 i‘m t Thread!!
 7 i‘m t Thread!!
 8 i‘m t Thread!!
 9 i‘m t Thread!!
10 i‘m t Thread!!
11 i‘m main Thread!!
12 i‘m main Thread!!
13 i‘m main Thread!!
14 i‘m main Thread!!
15 i‘m main Thread!!
16 i‘m main Thread!!
17 i‘m main Thread!!
18 i‘m main Thread!!
19 i‘m main Thread!!
20 i‘m main Thread!!

yield()方法示例:

 1 public class Thread1{
 2     public static void main(String[] args) {
 3         TestThread t1=new TestThread("t1");
 4         TestThread t2=new TestThread("t2");
 5         t1.start(); t2.start();
 6     }
 7 }
 8
 9 class TestThread extends Thread{
10     public TestThread(String s){
11         super(s);
12     }
13     public void run(){
14         for (int i=1;i<=100;i++) {
15             System.out.println(getName()+":"+i);
16             if(i%10==0){
17                 yield();    //当i%10==0时.会让出CPU.
18             }
19         }
20     }
21 }

输出:每当i%10==0时,当前线程t1(t2)必定会让出CPU给t2(t1).

  1 t1:1
  2 t1:2
  3 t1:3
  4 t1:4
  5 t1:5
  6 t1:6
  7 t1:7
  8 t2:1
  9 t1:8
 10 t2:2
 11 t1:9
 12 t2:3
 13 t1:10
 14 t2:4
 15 t1:11
 16 t2:5
 17 t2:6
 18 t1:12
 19 t1:13
 20 t2:7
 21 t2:8
 22 t2:9
 23 t2:10
 24 t1:14
 25 t1:15
 26 t1:16
 27 t1:17
 28 t1:18
 29 t1:19
 30 t1:20
 31 t2:11
 32 t2:12
 33 t2:13
 34 t2:14
 35 t2:15
 36 t2:16
 37 t2:17
 38 t2:18
 39 t2:19
 40 t2:20
 41 t1:21
 42 t1:22
 43 t1:23
 44 t1:24
 45 t1:25
 46 t1:26
 47 t1:27
 48 t1:28
 49 t1:29
 50 t1:30
 51 t2:21
 52 t2:22
 53 t2:23
 54 t2:24
 55 t2:25
 56 t2:26
 57 t2:27
 58 t2:28
 59 t2:29
 60 t2:30
 61 t2:31
 62 t2:32
 63 t2:33
 64 t2:34
 65 t2:35
 66 t2:36
 67 t2:37
 68 t2:38
 69 t2:39
 70 t2:40
 71 t2:41
 72 t2:42
 73 t2:43
 74 t2:44
 75 t2:45
 76 t2:46
 77 t2:47
 78 t2:48
 79 t2:49
 80 t2:50
 81 t1:31
 82 t1:32
 83 t1:33
 84 t1:34
 85 t1:35
 86 t1:36
 87 t1:37
 88 t1:38
 89 t1:39
 90 t1:40
 91 t2:51
 92 t2:52
 93 t2:53
 94 t2:54
 95 t2:55
 96 t2:56
 97 t2:57
 98 t2:58
 99 t2:59
100 t2:60
101 t1:41
102 t1:42
103 t1:43
104 t1:44
105 t1:45
106 t1:46
107 t1:47
108 t1:48
109 t1:49
110 t1:50
111 t2:61
112 t2:62
113 t2:63
114 t2:64
115 t2:65
116 t2:66
117 t2:67
118 t2:68
119 t2:69
120 t2:70
121 t2:71
122 t2:72
123 t2:73
124 t2:74
125 t2:75
126 t2:76
127 t2:77
128 t2:78
129 t2:79
130 t2:80
131 t2:81
132 t2:82
133 t2:83
134 t2:84
135 t2:85
136 t2:86
137 t2:87
138 t2:88
139 t2:89
140 t2:90
141 t1:51
142 t1:52
143 t1:53
144 t1:54
145 t1:55
146 t1:56
147 t1:57
148 t1:58
149 t1:59
150 t1:60
151 t2:91
152 t2:92
153 t2:93
154 t2:94
155 t2:95
156 t2:96
157 t2:97
158 t2:98
159 t2:99
160 t2:100
161 t1:61
162 t1:62
163 t1:63
164 t1:64
165 t1:65
166 t1:66
167 t1:67
168 t1:68
169 t1:69
170 t1:70
171 t1:71
172 t1:72
173 t1:73
174 t1:74
175 t1:75
176 t1:76
177 t1:77
178 t1:78
179 t1:79
180 t1:80
181 t1:81
182 t1:82
183 t1:83
184 t1:84
185 t1:85
186 t1:86
187 t1:87
188 t1:88
189 t1:89
190 t1:90
191 t1:91
192 t1:92
193 t1:93
194 t1:94
195 t1:95
196 t1:96
197 t1:97
198 t1:98
199 t1:99
200 t1:100

时间: 2024-08-27 02:54:06

java线程sleep(),join()和yield方法的相关文章

java 线程 wait join sleep yield notify notifyall synchronized

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 休息方法 : 在指定时间内 让该线程 暂停, 不会释放 锁标志. 等待方法: 让 该 线程等待, 如果 有锁标志, 将会释放 锁标志. 唤醒当前对象锁的等待线程 用 通知 或者 通知所有 方法,  等待方法 和 通知 方法 必须在 同步 函数 或 同步 块 中 进行调用. yield 方法 yield 是  n. 产量:收益  vt. 屈服:出产,产生:放弃 的意思. 加入 方法  

java ---线程wait/notify/sleep/yield/join

一.线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态). New:新建状态,当线程创建完成时为新建状态,即new Thread(...),还没有调用start方法时,线程处于新建状态. Runnable:就绪状态,当调用线程的的start方法后,线程进入就绪状态,等待CPU资源.处于就绪状态的线程由Java运行时系统的线程调度程序(thread scheduler)来调度. R

java线程的简单实现及方法

java线程: 线程是一个程序内部的顺序控制流. cpu实际上在一个时间点上,只执行一个.只不过我们把cpu分成了多个时间片,由于速度很快,我们看起来像是多个线程.. 就像你的时间分成几片,这样 整体看来做事情有规律,效率就会高,何况是cpu呢. 线程的创建和启动: 方法一: java线程通过java.lang.Thread类来实现. VM启动时会有一个主方法所定义的线程, 每一个线程是Tread对象通过它的run()方法来完成操作. 启动线程方式:Thread的start()方法. 如下代码:

JAVA线程超时控制的几种方法

1.设置一个守护线程对执行业务的线程计时,超时则抛出异常 2.Thread类有一个join(long millis)方法,执行该方法时如果另一个线程中断了当前线程,就会抛出一个InterruptedException异常(超时也抛出). 3.java.util.concurrent包FutureTask类有个get(int timeout, TimeUnit timeUnit)方法,该方法会阻塞一直等待执行完成拿到结果,如果在超时时间内没有返回则抛出异常 方法一.二: http://blog.c

Java线程--interrupt join yield setDaemon常用方法的使用

概念: 操作系统可以有多个进程,一个线程可以有一个或多个线程.进程与进程之间不共享内存,都在各自的空间中运行.而线程不仅可以共享内存,还可以用有一个自己的内存空间,叫做线程栈. 线程又称轻量级进程.Java的线程是靠CPU时间片的快速切换实现的,并不是真正的同时进行.每个线程有独立的线程栈和程序计数器.线程在自己的栈中存储变量,使数据互不干扰,对于共同资源,容易引发并发问题,需要同步处理. 创建线程常用的两种方式: 1.继承Thread类,重写run() 2.实现Runnable接口 线程生命周

Java多线程中join、yield、sleep方法详解

在Java多线程编程中,Thread类是其中一个核心和关键的角色.因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础.本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的使用. sleep方法 源码如下: /** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subje

java 线程协作 join()

在实际开发中我们往往会遇到这样的情况一个线程的执行需要依赖另一个线程执行后的结果.即主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了. join() join() 方法主要是让调用该方法的thread完成run方法里面的任务后, 再执行join()方法后面的代. 主线程生成并起动了子线程,而子线程里要进行大量的耗时

JAVA中的多线程(八):线程的优先级和yield方法

优先级代表着抢资源的频率 所有线程默认优先级是5 yield()临时释放线程的执行权 1 class Demo implements Runnable 2 { 3 public void run() 4 { 5 for(int x = 0; x < 70; x++) 6 { 7 System.out.println(Thread.currentThread().toString()+"..."+x); 8 Thread.yield(); 9 } 10 } 11 } 12 13 c

linux java线程100%的问题定位方法

一.背景 互联网发展的今天,很多问题都会在生产中遇到,假如某天发现系统资源中cpu占用100%,一直居高不下,那么就要进行问题查询了. 二.解决思路 1.查看那个java进程占用最多,top命令 [[email protected] test]# top -H 2.可以明显看到PID为29003的java进程占用cup最高,已占用了95.5%了,可根据进程号进一步查看该进程的线程情况.显示该进程中每个线程的CPU资源消耗情况. [[email protected] test]# top -H -