LockSupport
package com.qqjx.thread;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;
public class T13_TestLockSupport {
public static void main(String[] args) {
Thread t = new Thread(()->{
for (int i = 0; i < 10; i++) {
System.out.println(i);
if(i == 5) {
//当i等于5当前线程停止 阻塞了
LockSupport.park();
}
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
// unpark()要优先于park()如果unpark8()了即使park了也无效
LockSupport.unpark(t);
/*try {
TimeUnit.SECONDS.sleep(8);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("after 8 senconds!");
t线程继续执行
LockSupport.unpark(t);*/
}
}
主线程上加了unpark() t线程中的park()调用失效
0
1
2
3
4
5
6
7
8
9
主线程睡了8秒之后 t线程的阻塞状态变为继续执行
0
1
2
3
4
5
after 8 senconds!
6
7
8
9