没有合适的资源?快使用搜索试试~ 我知道了~
JUC是什么 线程 进程 / 线程 线程状态 wait / sleep 并发 / 并行 Lock 使用Lock锁 可重入锁 公平锁 / 非公平锁 Synchronized / Lock 线程通讯 wait()、notify()和notifyAll() 虚假唤醒 Condition 定制化通信 多线程锁 并发下的集合类 List Set Map Callable接口 线程创建的方式 callable / runnable FutureTask JUC常用辅助类 CountDownLatch (减少计数器) CyclicBarrier(加法计数器) Semaphore(信号量,流量控制) ReentrantReadWriteLock (读写锁) BlockingQueue(阻塞队列) 线程池 池化技术 线程池的优势 线程池的特点 线程池三大方法 线程池七大参数 线程池四种拒绝策略 ForkJoin 异步回调 Volatile 指令重排 JMM
资源推荐
资源详情
资源评论
这就是标题——JUC
文章目录
JUC是什么
线程
进程 / 线程
线程状态
wait / sleep
并发 / 并行
Lock
使用Lock锁
可重入锁
公平锁 / 非公平锁
Synchronized / Lock
线程通讯
wait()、notify()和notifyAll()
虚假唤醒
Condition
定制化通信
多线程锁
并发下的集合类
List
Set
Map
Callable接口
线程创建的方式
callable / runnable
FutureTask
JUC常用辅助类
CountDownLatch (减少计数器)
CyclicBarrier(加法计数器)
Semaphore(信号量,流量控制)
ReentrantReadWriteLock (读写锁)
BlockingQueue(阻塞队列)
线程池
池化技术
线程池的优势
线程池的特点
线程池三大方法
这就是标题——JUC
线程池七大参数
线程池四种拒绝策略
ForkJoin
异步回调
Volatile
指令重排
JMM
JUC
是什么
java.util.concurrent
并发编程工具包、包、分类
线程
进程
/
线程
进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执
行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
(
一个程序,
QQ.exe Music.exe
程序的集合
)
线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意
义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基
本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资
源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。
(
开了一个进程
Typora
,写字,自动保存(线程负责的
))
扩展
:Java
默认有
2
个线程
——mian
、
GC
线程状态
Thread.State
这就是标题——JUC
功能都是当前线程暂停,有什么区别?
1、来自不同的类
wait => Object
sleep => Thread
2、关于锁的释放
wait
会释放锁,
sleep
睡觉了,抱着锁睡觉,不会释放!
3、使用的范围是不同的
wait必须在同步代码块中
sleep
可以在任何地方睡
4、是否需要捕获异常
wait
不需要捕获异常
sleep
必须要捕获异常
并发
/
并行
并发(多线程操作同一个资源)
CPU
一核
,模拟出来多条线程
并行(多个人一起行走)
CPU
多核
,多个线程可以同时执行;
线程池
并发编程的本质:充分利用
CPU
的资源
Lock
经典售票例子
/**
* @description:售票
* @author: DAIHAO
* @time: 2020/5/16 10:42
*/
public class SaleTicketBySynchronized {
这就是标题——JUC
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(() -> {
for (int i = 1; i < 40; i++) {
ticket.sale();
}
}, "A").start();
new Thread(() -> {
for (int i = 1; i < 40; i++) {
ticket.sale();
}
}, "B").start();
new Thread(() -> {
for (int i = 1; i < 40; i++) {
ticket.sale();
}
}, "C").start();
}
}
// 资源类 OOP
class Ticket {
// 票号
private int number = 30;
/**
* 卖票的方式
*/
//synchronized 本质: 队列,锁
public synchronized void sale() {
if (number > 0) {
System.out.println(Thread.currentThread().getName() + "卖
出了" + (number--) + "票,剩余:" + number);
}
}
}
上面例子中最直接是给售票方法加上
synchronized
,同步方法,并发问题解决。
使用
Lock
锁
剩余51页未读,继续阅读
资源评论
DAIHAO丶
- 粉丝: 513
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功