Java的yield()方法不起作用。Netbeans Ubuntu 10.04

标签 java multithreading netbeans ubuntu

我正在 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/

相关文章:

c# - 日志字段应该私有(private)静态的任何原因?

java - 在实用程序类或继承自基本 Activity 之间做出决定

java : accessing parent variable in multi threaded programe

css - 使 CSS 注释充当 CSS 文件中的链接

java - 错误: incompatible types:byte cannot be converted to Boolean (illegal start of expression)

java - 文档监听器带来空指针异常

java - 为什么ExecutorService方法invokeAny()在每次运行的程序上都处理不同数量的任务?

android - 在 Android 上,应用程序在线程中运行无限循环时崩溃。

Java -Jar "my project"未在 C.P 中执行(Windows)

netbeans - ANTLR netbeans 配置找不到或加载主类 org.antlr.Tool