如何让一个线程读写完成以后再让另外一个线程可以读取

java代码里面存在多个线程,第一个线程去获取集合,然后对里面的内容进行了修改,但是在修改的过程中另外一个线程也去获取集合的内容了,这样第二个线程获取到的内容就是第一个线程修改之前的内容,应该如何加锁?

sychronized

给需要修改的资源加上锁

jdk提供了方法可以对集合进行同步:Collections.synchronizedCollection(Collection c); 如果是List集合,可以使用Collections.synchronizedList(List list);其他不同步的集合也有对应的方法。详细的内容请查看帮助文档

首先集合要选取线程安全的集合,另外读写锁了解一下

支持二楼的首先集合要选取线程安全的集合,另外读写锁了解一下

1.使用读写锁
2.sychronized
3.使用线程安全的集合 concurrent等。
4.volatite关键字修饰集合内的值,然后对集合的写枷锁。(性能忧 类似concurrentHashMap 就是以这种原理在实现。)