packagelime.mianshi._2019;/***@Author:Liangmy*@Description:*@Date:Createdin2019/12/21下午11:43*@ModifiedBy:*/importjava.util.concurrent.locks.LockSupport;importjava.util....
package lime.mianshi._2019;
/**
* @Author : Liangmy
* @Description :
* @Date : Created in 2019/12/21 下午11:43
* @Modified By :
*/
import java.util.concurrent.locks.LockSupport;
import java.util.stream.IntStream;
/**
* (4)线程A不断打印1-10的数字,打印到第5个数字时通知线程B,请完成编码。
*/
public class ThreadNotify2 {
static Thread t1 = null, t2 = null; // (1)
public static void main(String[] args) {
// Thread t1 = null, t2 = null; // (2)
t1 = new Thread(() -> IntStream.range(0, 3).forEach(j -> {
IntStream.range(1, 11).forEach(i -> {
System.out.println(Thread.currentThread().getName() + " ::::: " + i);
if (i == 5) {
LockSupport.unpark(t2);
LockSupport.park();
}
});
LockSupport.unpark(t2);
}));
t2 = new Thread(() -> IntStream.range(0, 3).forEach(j -> {
LockSupport.park();
IntStream.range(1, 3).forEach(i -> {
System.out.println(Thread.currentThread().getName() + " : " + i);
});
LockSupport.unpark(t1);
LockSupport.park();
}));
t1.start();
t2.start();
}
}
// (1)与(2)实例化的过程有什么区别?为什么(1)就可以,(2)就不行了?
展开