摘要:
一、ArrayList是线程不安全的,可以使用以下操作解决: 1.使用相同功能的集合类替换,比如Vector集合是线程安全的,他们实现的接口都是一样的,但是Vector类是在jdk1.0出现的,不推荐使用 2.使用 java.util.Collections类里面的静态方法synchronizedX 阅读全文
posted @ 2020-05-06 22:52
Jenne
阅读(165)
评论(0)
推荐(0)
摘要:
二、线程间定制化调用通信 要使多线程之间按顺序调用,实现A->B->C按顺序输出,使用Lock锁实现,通过Lock锁创建三个Condition实例(三把钥匙),通过不同的条件,调用不同钥匙的awite()跟singnal()方法,阻塞或唤醒其他线程 代码实现: package com.jenne.m 阅读全文
posted @ 2020-05-06 18:53
Jenne
阅读(159)
评论(0)
推荐(0)
摘要:
一、普通的线程间通信 1.synchronized实现 package com.jenne.mydemo; class ShareDataOne { private int number = 0; public synchronized void incr() { try { //判断 while 阅读全文
posted @ 2020-05-06 13:49
Jenne
阅读(188)
评论(0)
推荐(0)
摘要:
1.读写锁 分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁! WriteLock 阅读全文
posted @ 2020-05-06 03:46
Jenne
阅读(177)
评论(0)
推荐(0)
摘要:
1.什么是锁 在以前实现多线程的同步操作时,都是添加synchronized关键字或者synchronized代码块;而锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作。它们允许更灵活的结构,可能具有非常不同的属性,并且可能支持多个关联的条件对象。 2.核心方法 3.代码实现 1 packa 阅读全文
posted @ 2020-05-06 03:08
Jenne
阅读(125)
评论(0)
推荐(0)
摘要:
一、java.util.concurrent.CountDownLatch 减少计数 1.执行原理: ①。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。 ②。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞 阅读全文
posted @ 2020-05-06 02:38
Jenne
阅读(144)
评论(0)
推荐(0)
摘要:
一、什么是阻塞队列 阻塞队列是一个队列,在数据结构中起的作用如上图;当队列是空的,从队列中获取元素的操作将会被阻塞;当队列是满的,从队列中添加元素的操作将会被阻塞 1.为什么需要BlockingQueue: 好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQ 阅读全文
posted @ 2020-05-06 01:38
Jenne
阅读(150)
评论(0)
推荐(0)

浙公网安备 33010602011771号