gpt4 book ai didi

Java线程yield方法查询

转载 作者:行者123 更新时间:2023-12-01 14:10:19 25 4
gpt4 key购买 nike

我正在练习线程,我使用了yield(),我期望输出如下:(但没有达到预期)

One1
Two1
One2
Two2
One3
Two3
.
.
.
.

我的下面的代码有什么问题吗?

public class Main2 {

public static void main(String[] args) {

MyThread myThread1 = new MyThread("One");
MyThread myThread2 = new MyThread("Two");

/*Thread t1 = new Thread(myThread1);
Thread t2 = new Thread(myThread2);

t1.start();
t2.start();*/


myThread1.start();
myThread2.start();
}
}


class MyThread extends Thread {

private String name;

public MyThread(String name) {
this.name = name;
}

public void run(){

for(int i=1;i<=20;i++) {
System.out.println(name+i);
yield();
}
}
}

我还想知道注释语句是否正确使用?我的意思是:

Thread t1 = new Thread(myThread1);
Thread t2 = new Thread(myThread2);

t1.start();
t2.start();

等待您的回复..

最佳答案

yield() 方法在其 javadoc 中明确指出它是

A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.

因此,您不能总是期望执行传递给另一个线程。没有任何保证。

此外,在您的问题中注释语句是否正确使用,不,它不会改变任何东西。 Thread 构造函数接受一个 Runnable 参数,最终将在该参数上执行 run() 方法。 Thread实现了 Runnable,因此是一个有效的参数,但它具有与启动 Thread 本身相同的效果。

关于Java线程yield方法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com