首页
Java面试
PHP面试
经验笔记
在线工具
首页
在线工具
Java中的读写锁和应用场景
Java读写锁
C语言 在线运行
C++ 在线运行
Java 在线运行
PHP 在线运行
Python 在线运行
Python3 在线运行
Nodejs 在线运行
Ruby 在线运行
Perl 在线运行
Go 在线运行
R语言 在线运行
Lua 在线运行
C# 在线运行
结果显示HTML
清空
点击运行
import java.util.ArrayList; import java.util.Date; import java.util.concurrent.locks.ReentrantReadWriteLock; public class HelloWorld{ public static long getTimeStamp(){ Date date = new Date(); long timestamp = date.getTime();//返回13位时间戳 return timestamp; } public static void main(String[] args) throws InterruptedException { RWArrayList rwArrayList = new RWArrayList(); Thread t1 = new Thread(new Runnable() { @Override public void run() { //添加100个数 for (int i=0; i<10; i++) { rwArrayList.add(i); } System.out.println("添加数据完成"); } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { //读 long time1 = getTimeStamp(); for (int i=0; i
{ private ArrayList
list = new ArrayList
(); ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); ReentrantReadWriteLock.ReadLock readLock = lock.readLock(); ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); public void add(E element) { try { writeLock.lock(); list.add(element); } finally { writeLock.unlock(); } } public void removeLast() { try { writeLock.lock(); if(list.size()!=0){ list.remove(list.size() - 1); } } finally { writeLock.unlock(); } } public void set(int index, E element) { try { writeLock.lock(); list.set(index, element); } finally { writeLock.unlock(); } } public int size() { try { // 读锁 readLock.lock(); return list.size(); } finally { readLock.unlock(); } } public E get(int index) { try { // 读锁 readLock.lock(); try { Thread.sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } return list.get(index); } finally { readLock.unlock(); } } }
运行结果
Java读写锁在线测试,这是一个简单方便的Java在线运行工具,支持在线编译、在线调试和在线结果的实时反馈。