多线程
Fighting_mjtao
这个作者很懒,什么都没留下…
展开
-
并发编程:导致可见性\原子性\有序性原因
1.缓存导致的可见性问题 一个线程对共享变量的修改,另外一个线程能够立刻看到,我们称为可见性. 在单核时代,所有的线程都是在一颗 CPU 上执行,CPU 缓存与内存的数据一致性容易解决。因为所有线程都是操作同一个 CPU 的缓存,一个线程对缓存的写,对另外一个线程来说一定是可见的. 在多核时代,当多个线程在不同的 CPU 上执行时,这些线程操作的是不同的 CPU 缓存; 线...原创 2020-03-09 21:47:24 · 374 阅读 · 0 评论 -
Java生产者消费者模式
package cn.sdut.demo.concurrency; import java.util.Random; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; /** * Created By Majiatao */ public cla...原创 2019-12-04 16:35:35 · 202 阅读 · 0 评论 -
Java 队列Queue几个方法的区别
方法 作用 区别 add 增加一个元素 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 offer 添加一个元素并返回true 如果队列已满,则返回false。 如果 e 元素为 null 则抛出 NullPointerException 异常。该方法不阻塞 put 添加一个元素并返回true...原创 2019-12-04 13:44:52 · 655 阅读 · 0 评论 -
Java线程池拒绝策略
一、简介 jdk1.5 版本新增了JUC并发编程包,极大的简化了传统的多线程开发。 俗话说 满而不损则溢,盈而不持则倾。线程池既然是容器,那么必然的会有存满的情况。在达到某些特定条件的时候,再来请求的话,池子是如何进行请求处理的呢?这里就引出了池的拒绝策略。一般的数据库连接池在达到最大连接数的时候会默认的等待特定的设置的时间或者直接就抛出异常。而本文中要阐述的线程池却并非如此的策略,下...原创 2019-12-04 13:38:16 · 307 阅读 · 0 评论 -
原子性问题
package cn.sdut.concurrent.main; /** * @author MaJiatao * @description: 验证线程原子性 * @created: 2019/09/30 12:51 */ public class AddCount implements Runnable{ static Integer count = 0; stati...原创 2019-09-30 14:41:04 · 275 阅读 · 0 评论