首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java并发编程那些事儿
订阅
Clang
更多收藏集
微信扫码分享
微信
新浪微博
QQ
9篇文章 · 0订阅
Java并发编程那些事儿(七)——取消及关闭
这是并发编程系列的第七篇文章。上一篇介绍了Executor框架和线程池相关的内容,这一篇说一下任务的取消及关闭 俗话说的好,知道如何起飞很重要,但是知道如何平稳落地更重要。线程和任务的启动我们已经很清楚了,但是如何做到线程及任务安全的关闭及取消,也是有一定技巧的。 大部分场景下…
Java并发编程那些事儿(六)——Executor框架及线程池
这是并发编程系列的第六篇文章。上一篇介绍了一些比较常用的并发工具类,这篇主要说一下Executor框架及线程池。 顾名思义,线程池就是存放线程的池子,池子里面存放的是已经创建好的N个线程;Java里面一般用List或Set等容器类来存储线程,实现线程池功能。 首先,线程的创建和…
Java并发编程那些事儿(四)——线程间的协作
这是并发编程系列的第四篇文章。上一篇介绍的是通过ThreadLocal的方式实现多线程间的共享资源的访问,这篇介绍一下线程之间如何进行通信。 之前介绍的内容都是如何保证线程之间的运行互不干扰,但是有的时候,线程之间必须互相合作。比如清洗盘子完成之后,才能对盘子进行烘干操作,烘干…
Java并发编程那些事儿(三)——ThreadLocal及原子性与可见性
这是并发编程系列的第三篇文章。上一篇介绍的是线程间通过锁同步的方式实现共享资源的安全访问,这篇讲一下如何通过不加锁的方式实现共享可变资源的访问。 上篇文章讲到,如果想在多线程的环境下,实现共享可变资源的安全访问,最好的方式是加锁,也就是同一时刻只有一个线程在使用共享可变资源。如…
Java并发编程那些事儿(一) ——任务与线程
这是Java并发编程系列的第一篇文章,因为并发编程涉及的内容太多,很难用一篇或者两篇文章就说清楚,所以会分成多篇进行讲述。 针对并发编程,我大概列了一份简要的提纲,后面的文章基本会按照这个顺序来写。具体能不能全部写完,我也不太清楚;主要是因为自己的能力水平有限,加之写技术文章确…
Java并发编程那些事儿(八)——死锁
这是并发编程系列的第八篇文章。上一篇介绍了任务的取消及关闭,这一篇说一下死锁的问题。 一提到死锁,很多人都会想到哲学家问题。假设有5个哲学家,围坐在一张圆桌旁,哲学家只做两件事,吃饭和思考。吃饭的时候需要使用两只筷子,但是每个哲学家面前只放了一支筷子,如果想吃饭,必须借用旁边哲…
Java并发编程那些事儿(九)——内存模型
这是并发编程系列的第九篇文章。上一篇介绍了多线程死锁问题,这一篇说一下Java的内存模型,很多并发问题都是由内存模型决定。 上面的代码,ready变量如果不使用volatile关键字进行修饰,那么主线程对ready的修改,子线程将没办法及时发现。要想了解这个问题的本质原因,就需…
Java并发编程那些事儿(五)——闭锁、栅栏、信号量
这是并发编程系列的第五篇文章。上一篇介绍了线程间的通信问题,这篇主要说一下JDK提供的比较常用的三个并发工具类,闭锁,栅栏,和信号量。 闭锁类似于一道大门,所有的线程都在大门外等候,当大门打开时,所有线程一起开工。 CountDownLatch提供了一个构造函数,可以传入一个整…
Java并发编程那些事儿(二)——锁
这是并发编程系列的第二篇文章。上一篇介绍了线程和任务的关系,以及如何创建线程。这篇说一下多线程如何正确的访问共享可变资源。 所谓的共享可变资源就是每个线程都可以读也都可以写的资源。如何让多个线程正确的修改以及读取共享变量是一门学问。 如下段代码实现了一个线程计数器功能,也就是统…