Получить InputObjectStream из потока

Pierre Issartel спросил: 07 октября 2018 в 11:42 в: java

Я делаю приложение чата на Java.

У меня есть класс с именем Client, с несколькими методами, которые могут отправлять запрос на мой сервер и ждать ответа. Я использовал для этого:

public  boolean  authenticate(String login, String password) throws ResponseException{
    try {
        AuthentificationRequest req = new AuthentificationRequest(login,password);
        this.out.writeObject(req);
        this.out.flush();        Response rep=this.readResponse();

...

Но я меняю способ получения ответов от сервера. Теперь я использую поток с именем ResponseHandler:

public void run() {
    // TODO Auto-generated method stub
    Response rep = new Response();
    try {       
        while (!Thread.currentThread().isInterrupted()) {
            this.isResponseReceived=false;
            this.setResponse((Response) in.readObject()) ;
            synchronized(this) {
                this.isResponseReceived=true;
                notify();   
            }

Это мой новый метод readResponse:

public   Response readResponse(Request req) throws ClassNotFoundException, IOException, InterruptedException {
    synchronized(this.responseHandler) {        while(!this.responseHandler.isResponseReceived()) {
            this.out.writeObject(req);      
            wait(); 
        }
    }
    this.out.flush();
    return this.responseHandler.getResponse();
}

И это мой новый код клиента для предыдущего примера:

public  boolean  authenticate(String login, String password) throws ResponseException{
    try {        Response rep = this.readResponse(new AuthentificationRequest(login,password));

Но похоже, что мой код заблокирован в моем цикле ... Как я могу сделать так, чтобы мой клиент получил ответ потока?

Спасибо за ваш отзыв


0 ответов