Я хочу wait () метод put () , вызываемый из второго потока, который был подключен к Серверу (Монитору). Но когда я делаю это, все фреймы GUI (Swing), включая их элементы, замораживаются после второго вызова put (). Как это исправить? Я хочу, чтобы второй поток продолжал ждать, пока первый поток не выполнит get (), который освобождает слот. Заранее спасибо. Вот мой скелетный код:
Сервер:
Buffer<String> buf = new Buffer<String>(1);
while(true){
//for each socket connected
new ServerHandler(..., buf).start();
}
ServerHandler:
public class ServerHandler extends Thread {
Buffer<Messenger> buf;
public void run(){
buf.put("Test");
}
}
Buffer:
public class BufferImp<String>
private String[] requests;
private int cur_req_in; // current Request in the queue
private int req_size;
private int req_count;
public BufferImp(int size) {
this.req_size = size;
requests = new String[size];
this.cur_req_in = 0;
this.req_count = 0;
}
public synchronized void put(E o) throws InterruptedException {
while(req_size == req_count) this.wait();
requests[cur_req_in] = o;
cur_req_in = (cur_req_in + 1) % req_size;
req_count++;
notifyAll();
}
}