📄 test11_1.java
字号:
//检索和存储向量中的对象,理解wait(),notify(),及synchronized的概念
import java.util.*;
import java.io.*;
class Message implements Serializable
{
String from;
String message;
public Message(String from,String message)
{
this.from=from;
this.message=message;
}
}
class MyVector extends Vector
{
BufferedReader standardInput;
static int counter;
int instanceCounter;
public MyVector()
{
super(1,1);
standardInput=new BufferedReader(new InputStreamReader(System.in));
}
synchronized void put()
{
try{
System.out.println("Enter your name and message");
String from=standardInput.readLine();
String message=standardInput.readLine();
Message msg=new Message(from,message);
addElement((Message)msg);
counter++;
notify();
}
catch(IOException e)
{}
}
synchronized void get()
{
while(instanceCounter>=counter)
{
try
{
wait();
}
catch(InterruptedException e)
{
System.out.println("Thread interrupted "+e);
}
}
// for(int i=0;i<counter;i++)
// {
Message msg=(Message)elementAt(counter-1);//elementAt(i);
System.out.println(msg.from+":"+msg.message);
// }
instanceCounter++;
if(instanceCounter==4)
{
System.out.println("=================");
for(int i=0;i<4;i++)
{ Message msg1=(Message)elementAt(i);//elementAt(i);
System.out.println(msg1.from+":"+msg1.message);
}
}
notify();
}
}
class Mythread1 extends Thread
{
MyVector myVector;
public Mythread1(MyVector myVector)
{
this.myVector=myVector;
new Thread(this).start();
}
public void run()
{
while(true)
{
myVector.put();
}
}
}
class Mythread2 extends Thread
{
MyVector myVector;
public Mythread2(MyVector myVector)
{
this.myVector=myVector;
new Thread(this).start();
}
public void run()
{
while(true)
{
myVector.get();
}
}
}
public class Test11_1
{
public static void main(String args[])
{
MyVector myVector=new MyVector();
new Mythread1(myVector);
new Mythread2(myVector);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -