Java Threads - содержимое внутри циклов - PullRequest
0 голосов
/ 25 июня 2018

Очень просто. Когда я использую метод, запустите так:

 @Override
 public void run() {
     CraftRoulette.getInstance();
     while(socket==null && outputstream==null && inputstream==null) {
        System.out.println("ahah");
     }
     System.out.println("RUN");
     while(socket!=null && !socket.isClosed()) {
        System.out.println("STOP");
        System.out.println("Checking");
        checkForUpdatesOnServer();
     }
     if(socket!=null && socket.isClosed()) System.out.println("FODA-SE, MAS QUE BEM!");
}

это выводит:

 ahah
 (...)
 ahah
 RUN
 STOP
 Checking

Однако, если я удалю содержимое первого цикла:

 @Override
 public void run() {
 CraftRoulette.getInstance();
 while(socket==null && outputstream==null && inputstream==null) {
 }
 System.out.println("RUN");
 while(socket!=null && !socket.isClosed()) {
    System.out.println("STOP");
    System.out.println("Checking");
    checkForUpdatesOnServer();
 }
 if(socket!=null && socket.isClosed()) System.out.println("FODA-SE, MAS QUE BEM!");
}

Ничего не выводится. Это единственное изменение, которое я применяю. Почему sysout поддерживает метод run, а не просто убивает его?

РЕДАКТИРОВАТЬ: Volatile на сокете сделал свою работу, спасибо!

...