sharedtest.java
来自「服务器要同时处理多个客户的通信」· Java 代码 · 共 68 行
JAVA
68 行
class Consumer extends Thread{
private ShareArea sharedObject;
public Consumer(ShareArea shared){
sharedObject=shared;
}
public void run(){
int value;
do{
try{
Thread.sleep((int)(Math.random()*3000));
}catch(InterruptedException e){}
value=sharedObject.getSharedInt();
System.out.println("consumer:"+value);
}while(value!=10);
}
}
class Producer extends Thread{
private ShareArea sharedObject;
public Producer(ShareArea shared){
sharedObject=shared;
}
public void run(){
for(int count=1;count<=10;count++){
try{
Thread.sleep((int)(Math.random()*3000));
}catch(InterruptedException e){}
sharedObject.setSharedInt(count);
System.out.println("producer:"+count);
}
}
}
class ShareArea{
private int sharedInt=-1;
private boolean writeable=true;
public synchronized void setSharedInt(int value){
while(!writeable){
try{
wait();
}catch(InterruptedException e){}
}
sharedInt=value;
writeable=false;
notify();
}
public synchronized int getSharedInt(){
while(writeable){
try{
wait();
}catch(InterruptedException e){}
}
writeable=true;
notify();
return sharedInt;
}
}
public class SharedTest{
public static void main(String args[]){
ShareArea sharedObject=new ShareArea();
Producer p=new Producer(sharedObject);
Consumer c=new Consumer(sharedObject);
p.start();
c.start();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?