创建一个实体类
public class Data {
private int data;
private ReadWriteLock lock = new ReentrantReadWriteLock();
public void set(int data){
lock.writeLock().lock(); //取到写锁
try {
System.out.println(Thread.currentThread().getName()+"准备写入数据!");
try {
Thread.sleep(0);
}catch (InterruptedException e) {
e.printStackTrace(); //打印异常信息
}
this.data = data;
System.out.println(Thread.currentThread().getName()+"写入"+this.data);
}finally {
lock.writeLock().unlock(); //释放写锁!
}
}
public void get(){
lock.readLock().lock(); // 取到读锁!
try {
System.out.println(Thread.currentThread().getName()+"准备读取数据");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace(); //打印异常
}
System.out.println(Thread.currentThread().getName()+"读取数据!");
}finally {
lock.readLock().unlock(); //释放读锁!
}
}
}
创建一个函数实体类 验证 多线程数据共享处理高并发
public class TestDataMian {
public static void main(String[] args) {
final Data data = new Data();
for (int i = 0; i < 3; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 5; j++) {
data.set(new Random().nextInt(30));
}
}
},"小明").start();
}
for (int i = 0; i < 3; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 5; j++) {
data.get();
}
}
}).start();
}
}
}
自己测试的 如有错误 欢迎指出!
本文介绍了一个使用Java实现的多线程环境下数据共享处理的示例,通过ReentrantReadWriteLock来确保数据的一致性和并发处理能力。示例中包含了一个Data实体类,该类使用读写锁来控制多个线程对数据的读取和写入操作。
926

被折叠的 条评论
为什么被折叠?



