Java yield () метод не работает. Netbeans Ubuntu 10.04 - PullRequest
2 голосов
/ 24 ноября 2010

Я работаю с потоками в Java, используя Netbeans 6.9.1 в Ubuntu 10.04 x86_64. У меня проблема с использованием метода yield (), потому что когда я вызываю этот метод, текущий поток продолжает работать, а не останавливается и разрешает выполнение другим потокам.

Приведенный ниже код - простой пример запуска 2 потоков с помощью yield. Вместо запуска первого потока, выведите одну строку и затем остановите поток, программа завершает поток 1, а затем запускает поток 2, так как метод yield не вызывается. Я проверил этот код на Windows, и он отлично работает! поэтому мне интересно, есть ли проблемы с использованием этого метода на Ubuntu или на 64-битных платформах.

Есть идеи? Заранее спасибо.

<code>
//ThreadTest.java
public class ThreadTest extends Thread{
    public ThreadTest (String name){
        super(name);
    }
    public void run(){
        for (int i=0;i<5;i++){
            System.out.println(getName()+" - "+i);
            yield();
        }
        System.out.println(" END "+getName());
    }
}</p>

<p>//Main.java
public class Main {
   public static void main(String[] args) {
        ThreadTest t1 =new ThreadTest("Thread1");
        ThreadTest t2 =new ThreadTest("Thread2");
        t1.start();
        t2.start();
   }
}

Ответы [ 2 ]

12 голосов
/ 24 ноября 2010

yield - это просто запрос на планирование другого потока.Ничто не мешает JVM или базовой ОС снова планировать тот же поток.

1 голос
/ 24 ноября 2010

Javadoc для метода yield() на солнце JDK 6 и JDK 7 отличается, вам может потребоваться проверить Javadoc для используемой версии JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...