非阻塞线程编程之美

本文探讨了多线程中的线程阻塞问题,通过一个泡茶案例展示了阻塞线程如何影响程序执行。然后介绍了Guava的ListenableFuture和FutureCallback接口,用于实现非阻塞的异步回调,从而实现主线程在等待任务完成时能够执行其他任务,提高了程序效率。
摘要由CSDN通过智能技术生成
背景

今天年后最后一天了,是不是很羡慕?不要羡慕,虽然是最后一天了,但是我依然在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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值