【发布时间】:2014-02-27 01:49:23
【问题描述】:
我想在线程中运行的 Vector 中使用同步
我尝试使用一种方法等待,另一种方法用于通知
我想从静态类调用通知方法 这是我的线程代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.Vector;
public class TSend extends Thread {
Vector<String> File_Message=new Vector<String>();
public void save_out_putMessage(String out_Msg){
synchronized(this.File_Message){
this.File_Message.add(out_Msg);
this.File_Message.notify();
}
}
public synchronized String GetMessage() throws InterruptedException{
String message;
while(File_Message.size()==0){
this.File_Message.wait();
}
message = File_Message.get(0);
File_Message.removeElementAt(0);
return message;
}
public synchronized void Recepteur_de_Message (String message){
/*
* Pour savgarde tout les message des client dans un vecteur Message .
*
*/
File_Message.add(message);
notify();
}
@Override
public void run(){
try{
String Message ;
while(true){
str =GetMessage();
}
}catch(Exception e){
e.printStackTrace();
}
我尝试这样做:
synchronized(F){
while(F.size()==0) {
F.wait();
}
Message= new String(F.get(0));
F.removeElementAt(0);
}
但我有这个例外,我尝试运行
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at TSend.GetMessage(TSend.java:39)
at TSend.run(TSend.java:78)
【问题讨论】:
标签: java wait synchronized