问题描述:多个读者时可以同时读,读时其他线程不能写,写其他线程不能写;
//不用读写互斥的情况
import java.util.Random;
public class WriteReadLocktest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
final Queue1 q3 = new Queue1();
for(int i =0 ;i<3;i++)
{ new Thread()
{
public void run(){
while(true)
{
q3.put(new Random().nextInt(1000));
}
}}.start();
new Thread()
{
public void run(){
while(true)
{
q3.get();
}
}}.start();
}}
}
class Queue1{
private Object data =null;
public void put(Object data){
System.out.println(Thread.currentThread().getName()+"is ready to put data");
try {
Thread.sleep((long)(Math.random()*1000));
this.data = data;
System.out.println(Thread.currentThread().getName()+"has put the data :"+data);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void get(){
System.out.println(Thread.currentThread().getName()+"is ready to read data!");
try {
Thread.sleep((long)(Math.random()*1000));
System.out.println(Thread.currentThread().getName()+"has read the data: "+data);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}