join方法
线程A执行了线程B的join方法,,线程A必须要等线程B执行完成后,线程A才能继续执行
感觉像是插队[捂脸]
package org.dance.day1;
import org.dance.tools.SleepTools;
/**
* join方法的使用
*/
public class UseJoin {
//
static class JumpQueue implements Runnable {
private Thread thread;//用来插队的线程
public JumpQueue(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
try {
System.out.println(thread.getName()+" will be join before "
+Thread.currentThread().getName());
thread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" terminted.");
}
}
public static void main(String[] args) throws Exception {
Thread previous = Thread.currentThread();//现在是主线程
for (int i = 0; i < 10; i++) {
//i=0,previous 是主线程,i=1;previous是i=0这个线程
Thread thread =
new Thread(new JumpQueue(previous), String.valueOf(i));
System.out.println(previous.getName()+" jump a queue the thread:"
+thread.getName());
thread.start();
previous = thread;
}
SleepTools.second(2);//让主线程休眠2秒
System.out.println(Thread.currentThread().getName() + " terminate.");
}
}
接下来说一下调用yield sleep wait notify方法会对锁产生的影响
yield:
线程在执行yield以后,持有的锁是不会释放的
sleep:
线程在进入Sleep之后,锁也是不会释放的
wait:
调用wait方法之前,必须要先持有锁,调用wait方法以后,锁会被释放,当wait方法被唤醒时,线程会重新持有锁
notify:
调用notify之前,也必须要持有锁,调用notify方法本身不会释放锁
作者:彼岸舞
时间:2020\09\16
内容关于:并发编程
本文来源于网络,只做技术分享,一概不负任何责任