V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjngbla
V2EX  ›  程序员

关于 Java 多线程的疑问

  •  
  •   xjngbla · 2022-01-05 17:18:00 +08:00 · 1284 次点击
    这是一个创建于 1047 天前的主题,其中的信息可能已经有所发展或是发生改变。
    springboot 中的 @Async 注解是多线程还是异步呢
    2 条回复    2022-01-05 17:33:58 +08:00
    mineralsalt
        1
    mineralsalt  
       2022-01-05 17:21:10 +08:00
    当然是异步的, 由线程池管理, 线程池数量可以自己设置, 使用这个的时候要注意函数执行时间, 它不会等函数执行完成
    xjngbla
        2
    xjngbla  
    OP
       2022-01-05 17:33:58 +08:00
    @mineralsalt 在网上找到了这段话,明白了,谢谢

    异步与多线程的区别
    通过上面的介绍,我们可以看出多线程都是关于功能的并发执行。而异步编程是关于函数之间的非阻塞执行,我们可以将异步应用于单线程或多线程当中。

    <b>因此,多线程只是异步编程的一种实现形式。</b>

    比如,你和你的朋友决定一起做一顿午餐。“异步”就是你对朋友说:“你去商店买意大利面,回来的时候告诉我一声,然后一起做午餐。在你买意大利面的同时,我去准备番茄酱和饮料。”

    而“线程”是:“你烧水,我加热番茄酱。当水烧开了,告诉我,我把意大利放进去。当番茄酱热了,你可以把奶酪添加进去。当两者都完成了,就可以坐下来一起吃晚餐。”在线程的示例中,我们可以看到“When ,Do”的事件顺序,而这些顺序代表着每个人(线程)的指令集集合的顺序。

    上述示例可以看出,多线程是与具体的执行者相关的,而异步是与任务相关的。

    多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码,可以实现线程间的切换执行。

    异步和同步是相对的,异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

    多线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。

    所以本质上,异步和多线程并不是一个同等关系,异步是最终目的,多线程只是实现异步的一种手段。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:42 · PVG 12:42 · LAX 20:42 · JFK 23:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.