随笔分类 -  多线程

摘要:队列中锁的实现不同ArrayBlockingQueue实现的队列中的锁是没有分离的,即生产和消费用的是同一个锁;LinkedBlockingQueue实现的队列中的锁是分离的,即生产用的是putLock,消费是takeLock 因此,LinkedBlockingQueue的一大优点也是ArrayBl 阅读全文
posted @ 2020-04-30 22:05 北城cheng 阅读(257) 评论(0) 推荐(0)
摘要:** * 对业务写方法加锁 * 对业务读方法不加锁 * 容易产生脏读问题 就是对写加锁但对读没有加锁,这样在写的过程中可能还没写完就被读了 * * */public class Demo { String name; double balance; public synchronized void 阅读全文
posted @ 2020-04-29 22:11 北城cheng 阅读(610) 评论(0) 推荐(0)
摘要:在一个迭代器初始的时候会赋予它调用这个迭代器的对象的modcount,如果在迭代器遍历的过程中,一旦发现这个对象的modcount和迭代器中存储的modcount不一样那就抛异常 完整解释 :Fail-Fast 机制 我们知道 java.util.HashMap 不是线程安全的,因此如果在使用迭代器 阅读全文
posted @ 2020-04-25 16:41 北城cheng 阅读(558) 评论(0) 推荐(0)
摘要:public class CountDownLatch { public static void main(String[] args) throws Exception{ java.util.concurrent.CountDownLatch countDownLatch = new java.u 阅读全文
posted @ 2020-04-13 22:01 北城cheng 阅读(365) 评论(0) 推荐(0)
摘要:首先,volatile:是一个类型修饰符 作用: 一是实现可见性,即一个线程修改了某个变量的值,这个新值对其他线程来说是立即可见的。(实现可见性) //线程1 boolean stop = false; while(!stop){ doSomething(); } //线程2 stop每个线程在运行 阅读全文
posted @ 2020-04-12 22:04 北城cheng 阅读(170) 评论(0) 推荐(1)