设为首页 加入收藏

TOP

Java并发编程-各种锁(六)
2018-03-18 16:21:30 】 浏览:813
Tags:Java 并发 编程 各种
est = new ReadWriteLockTest();


        new Thread(){
            @Override
            public void run() {
                test.get(Thread.currentThread());
            }
        }.start();


        new Thread(){
            @Override
            public void run() {
                test.get(Thread.currentThread());
            }
        }.start();


    }


    public  void get(Thread thread) {
        try {
            rw1.readLock().lock();
            long start = System.currentTimeMillis();
            while (System.currentTimeMillis() - start <= 1){
                System.out.println(thread.getName() + "正在读操作");
            }
            System.out.println(thread.getName() + "读操作完成");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            rw1.readLock().unlock();
        }


    }


}


运行结果如下:



可以看到线程间是不用排队来读操作的。这样效率明显很高。


我们再看一下写操作,如下:


public class ReadWriteLockTest {
    private ReentrantReadWriteLock rw1 = new ReentrantReadWriteLock();


    public static void main(String[] args) {
        final ReadWriteLockTest test = new ReadWriteLockTest();


        new Thread(){
            @Override
            public void run() {
                test.get(Thread.currentThread());
            }
        }.start();


        new Thread(){
            @Override
            public void run() {
                test.get(Thread.currentThread());
            }
        }.start();


    }


    public  void get(Thread thread) {
        try {
            rw1.writeLock().lock();
            long start = System.currentTimeMillis();
            while (System.currentTimeMillis() - start <= 1){
                System.out.println(thread.getName() + "正在写操作");
            }
            System.out.println(thread.getName() + "写操作完成");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            rw1.writeLock().unlock();
        }


    }


}


运行结果如下:



可以看到ReadWriteLock只允许一个写者。


公平锁


Re

首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇二叉搜索树介绍及其接口说明 下一篇在Kotlin中使用Gradle构建缓存

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目