join()
当线程t1调用t2.join()后,t1保持锁对象,等待t2执行完,t1进入可执行状态;
package thread;
public class JoinRunnable implements Runnable {
Thread t1 ,t2;
public JoinRunnable() {
t1 = new Thread(this);
t1.setName("t1");
t2 = new Thread(this);
t2.setName("t2");
}
@Override
public void run() { //如果加上synchronized锁标记,那么即使t1线程调用了t2.join();由于join不释放锁,t2还是无法按预期执行
System.out.println(Thread.currentThread().getName());
if(Thread.currentThread()==t1){
try {
System.out.println("t2.join();");
t2.join(); /
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName());
}
}
public static void main(String[] args){