您好,欢迎访问一九零五行业门户网

java读写锁怎么用

1、公平选择性,支持非公平和公平锁获取,吞吐量不公平优于公平。
2、重进入,读锁和写锁都支持线程重进入。
3、锁降级,遵循获取写锁、获取读锁、释放写锁的顺序,写锁可以降级为读锁。
实例
public class readwritelocktest {    public static void main(string[] args) {         final queue q = new queue();         for (int i = 0; i < 3; i++) {             new thread() {                @override                public void run() {                     while (true) {                        q.get();                    }                }            }.start();             new thread() {                @override                public void run() {                    while (true) {                        q.put(new random().nextint(10000));                    }                }            }.start();        }    }} class queue {     //共享数据,只能有一个线程能写该数据,但可以有多个线程同时读该数据。    readwritelock rwl = new reentrantreadwritelock();    private object data = null;//共享数据,只能有一个线程能写数据,但可以有多个线程读该数据     public void get() {        //上读锁,其他线程只能读不能写        rwl.readlock().lock();        try {             system.out.println(thread.currentthread().getname() +  be ready to read data!);            thread.sleep((long) (math.random() * 1000));            system.out.println(thread.currentthread().getname() +  have read data : + data);        } catch (interruptedexception e) {            e.printstacktrace();        } finally {            rwl.readlock().unlock();        }    }     public void put(object data) {        //上写锁,不允许其他线程读也不允许写        rwl.writelock().lock();         try {            system.out.println(thread.currentthread().getname() +  be ready to write data!);             thread.sleep((long) (math.random() * 1000));             this.data = data;            system.out.println(thread.currentthread().getname() +  have write data:  + data);        } catch (interruptedexception e) {            e.printstacktrace();        } finally {            rwl.writelock().unlock();        }    }}
以上就是java读写锁怎么用的详细内容。
其它类似信息

推荐信息