1700451109
1700451110
public void read(){
1700451111
1700451112
try{
1700451113
1700451114
r.lock();
1700451115
1700451116
Thread.sleep(1000);
1700451117
1700451118
System.out.println(“read……”);
1700451119
1700451120
}catch(InterruptedException e){
1700451121
1700451122
e.printStackTrace();
1700451123
1700451124
}finally{
1700451125
1700451126
r.unlock();
1700451127
1700451128
}
1700451129
1700451130
}
1700451131
1700451132
//写操作,同时只允许一个写操作
1700451133
1700451134
public void write(Object_obj){
1700451135
1700451136
try{
1700451137
1700451138
w.lock();
1700451139
1700451140
Thread.sleep(1000);
1700451141
1700451142
System.out.println(“Writing……”);
1700451143
1700451144
}catch(InterruptedException e){
1700451145
1700451146
e.printStackTrace();
1700451147
1700451148
}finally{
1700451149
1700451150
w.unlock();
1700451151
1700451152
}
1700451153
1700451154
}
1700451155
1700451156
}
1700451157
1700451158
可以编写一个Runnable的实现类,把Foo类作为资源进行调用(注意多线程是共享这个资源的),然后就会发现这样的现象:读写锁允许同时有多个读操作但只允许有一个写操作,也就是当有一个写线程在执行时,所有的读线程和写线程都会阻塞,直到写线程释放锁资源为止,而读锁则可以有多个线程同时执行。
[
上一页 ]
[ :1.700451109e+09 ]
[
下一页 ]