并发编程艺术
文章平均质量分 76
线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类。
程序员云帆哥
互联网厂程序员,高级Java开发工程师。博客认证:CSDN博客专家、阿里云专家博主、华为云云享专家、腾讯云年度优秀作者。
展开
-
CountDownLatch、CyclicBarrier和Semaphore区别及底层原理
一说到并发编程、多线程,我们总会想到CountDownLatch、CyclicBarrier和Semaphore,今天我们探讨下它们之间的区别及底层原理。原创 2021-11-08 12:12:01 · 690 阅读 · 0 评论 -
同步、异步、并发、并行、串行
1、同步与异步,同步:多个任务情况下,一个任务A执行结束,才可以执行另一个任务B。只存在一个线程。异步:多个任务情况下,一个任务A正在执行,同时可以执行另一个任务B。任务B不用等待任务A结束才执行。存在多条线程。原创 2018-04-22 23:56:39 · 7889 阅读 · 0 评论 -
详解Java线程池
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。原创 2020-09-29 01:47:29 · 251 阅读 · 0 评论 -
Thread类的run()和start()方法的区别
;start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包...原创 2018-03-15 11:36:26 · 17557 阅读 · 4 评论 -
线程安全经典案例:银行取钱问题
银行取钱的基本流程基本上可以分为如下几个步骤。 (1)用户输入账户、密码,系统判断用户的账户、密码是否匹配。 (2)用户输入取款密码 (3)系统判断账户余额是否大于取款余额 (4)如果余额大于取款余额,则取钱成功;如果余额小于取款余额,则取钱失败。1、先定义一个账户类,该账户类封装了账号和余额两个实例变量。原创 2017-04-24 10:37:06 · 18264 阅读 · 2 评论 -
如何控制玩转多线程
1、 join线程 join():让一个线程等待另一个线程完成的方法。 Join(long millis):在millis内被join的线程没有执行结束,则不再等待。 2、 后台线程 任务:为其他的线程提供服务 特征:如果所有的前台线程都死亡,后台线程会自动死亡。 setDaemon(true)方法将指定线程设为后台线程(必须在start()方法之前调用)。原创 2017-04-17 11:11:01 · 12651 阅读 · 0 评论 -
浅谈线程的生命周期
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。原创 2017-04-17 11:06:53 · 20734 阅读 · 0 评论 -
创建线程的三种方式优缺点
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。 一、继承Thread类创建线程类 1.重写run方法。该run()方法的方法体就代表了线程需要完成的任务 2.创建Thread子类的实例 3.调用线程对象的start()方法来启动该线程。原创 2017-04-10 11:08:21 · 31666 阅读 · 1 评论 -
多线程:线程和进程的区别与联系
1、基础概念 (1)一个任务通常对应一个进程,一个进程可能包含多个顺序执行流,每个顺序执行流是一个线程。 (2)线程也被称为轻量级进程,线程是进程的执行单元。原创 2017-03-25 11:08:46 · 11198 阅读 · 0 评论