背景
今天年后最后一天了,是不是很羡慕?不要羡慕,虽然是最后一天了,但是我依然在code的路上,只不过没有在写业务代码了,而是在写一些自己感兴趣的东西,前几天翻了翻多线程的东西,感觉还是又有新的收获的,于是今天又抽空看了下。
线程阻塞
我们都知道多线程可以提高系统处理业务的能力,但是我们有没有考虑过,很多时候我们编写的多线程代码是阻塞的,尤其是主线程大部分需要阻塞,比如我们常用的join,还有future的get方法,当然很业务场景下,确实是需要阻塞的,比如上篇文章的最后一个demo
java多线程浅析之sleep、wait、join详解
但是!!!总有些场景主线程想要去干点别的事情的,今天就以泡茶案例来分析下非阻塞线程的编程之美。
案例分析:
- 烧开水
- 洗杯子
- 泡茶、喝茶
烧水线程
public class HotWaterThread implements Callable<Boolean> {
@Override
public Boolean call() {
System.out.println("烧水中。。。。。。");
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
return true;
}
}
洗杯子线程
public class WashCupThread implements Callable<Boolean> {
@Override
public Boolean call(){
System.out.println("洗杯子中。。。。。。");
try {
Thread.sleep(100L)