我正在 Ubuntu 10.04 x86_64 上使用 Netbeans 6.9.1 在 Java 中处理线程。我在使用方法yield()时遇到问题,因为当我调用此方法时,当前线程继续运行而不是停止并让其他线程执行。
下面的代码是一个使用yield 运行2 个线程的简单示例。该程序不是运行第一个线程、打印一行然后停止线程,而是完成线程 1,然后运行线程 2,因为未调用方法yield。我已经在 Windows 上测试了这段代码,它运行得很好!所以我想知道在Ubuntu或64位平台上使用此方法是否有任何问题。
有什么想法吗?提前致谢。
//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>
<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();
}
}
</p>
最佳答案
yield
只是对另一个要调度的线程的请求。没有什么可以阻止 JVM 或底层操作系统再次调度同一线程。
关于Java的yield()方法不起作用。Netbeans Ubuntu 10.04,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261748/