为了账号安全,请及时绑定邮箱和手机立即绑定

基本代码上显示的读/写锁与同步之间的区别

基本代码上显示的读/写锁与同步之间的区别

慕婉清6462132 2022-05-12 15:35:22
在我的作业中,我需要展示代码中读/写锁和“同步”关键字使用之间的区别。我真的不知道该怎么做,以及理解这种差异的明确方法是什么。我还需要显示以两种方式执行同一任务的时间差。这是我尝试过的代码(虽然没有同步)public class Main {    public static void main(String[] args) {        Number number = new Number(5);        Thread t1 = new Thread(){            public void run(){                System.out.println(number.getData());                number.changaData(10);                System.out.println(number.getData());            }};            Thread t2 = new Thread(){                public void run(){                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                    System.out.println(number.getData());                    number.changaData(20);                    System.out.println(number.getData());                }};                t2.start();                t1.start();    }}public class Number {    private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();    private final Lock readLock = rwl.readLock();    private final Lock writeLock = rwl.writeLock();    int value;    public Number(int value) {        this.value = value;    }    public int getData() {        readLock.lock();        try {            return value;        }        finally {            readLock.unlock();        }    }    public int changaData(int change) {        writeLock.lock();        try {            value = change;            return value;        }        finally {            writeLock.unlock();        }    }}
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

同步锁和读/写锁之间的区别在于,当您使用同步锁时,它一次只允许一个线程访问。使用读/写锁,您可以同时拥有多个读取器(假设已经没有写锁),因此您可以在某些情况下获得更好的并发性能,尤其是当这里有很多读取时。

您应该添加更多访问此对象的线程以测试性能。

您可以简单地计算完成和开始操作之间的时间来衡量性能(例如 - Long startTime = System.nanoTime();)。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信