![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
技术傻白甜
这个作者很懒,什么都没留下…
展开
-
线程的基础概念和共享协作
java程序天生就是多线程的,每一个程序的运行都包含多个线程的协作。多线程的好处在于1.可以充分利用计算机资源 2.使程序响应更加快速,但是任何事情都有其两面性。缺点也同样存在,1.多线程对计算机硬件(cpu,内存等)要求较高 2.计算机资源有限,太多的线程运行,会导致上下文频繁切换,甚至出现死锁等情况,出现非预期效果。 一.查看程序线程 查看简易Main程序线程 public class M...原创 2019-06-27 21:24:35 · 336 阅读 · 0 评论 -
线程并发的工具类
线程轮巡机制虽然很常见,但是有一定的弊端,例如:米饭15分钟后焖好,但是没有提醒,那么你需要多次去查询是否到15分钟,查询的过程很浪费资源,并且容易处理不及时。所以线程协作中更多的是生产者和消费者。 一.等待和通知的标准范式 等待方: (1)获取对象的锁 (2)循环判断条件是否与自己相符合,不符合则调用wait(),继续等待 (3)条件满足,则执行业务逻辑 通知方: (1)获取对象的锁 (2)改变...原创 2019-07-04 08:58:21 · 153 阅读 · 0 评论 -
显示锁和AQS
一.什么是原子操作?如何实现原子操作? 原子操作即为操作的最小单元,比如i=1,这样一个简单的赋值操作便是原子操作。再例如i=i+1就不是一个原子操作,因为这个语句包括了读取i,i+1,将结果写入内存。这三个操作单元。保证原子操作即保证这三个单元在操作中具有原子性,也就是保证这个操作单元在操作中,不能因线程竞争等情况而被打断。如果操作单元被打断,那么计算结果会发生变化,也就无法保证线程的安全。 那...原创 2019-07-12 09:28:23 · 207 阅读 · 0 评论 -
线程池
在当前实际开发中,我们已经很少见到能单独使用Thread或Runable的场景。更多的是用线程池。线程池即会初始化创建一些线程,这些线程当任务来临的时候,会立即去处理任务,在任务完成后也不会进行销毁,而是等待下一个任务的到来。 1.为什么要使用线程池? (1)线程的创建和销毁都需要时间,那么理论上我们创建线程执行任务,包含的时间是 创建的时间T1、执行任务的时间 T2、销毁的时间T3。所以执行...原创 2019-07-24 16:27:43 · 177 阅读 · 0 评论