java中join和yield有什么区别?
答案:2 悬赏:30 手机版
解决时间 2021-02-21 06:58
- 提问者网友:棒棒糖
- 2021-02-20 12:49
java中join和yield有什么区别?
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-02-20 13:36
yield:理论上,yield意味着放手,放弃,投降。一个调用yield()方法的线程告诉虚拟机它乐意让其他线程占用自己的位置。这表明该线程没有在做一些紧急的事情。注意,这仅是一个暗示,并不能保证不会产生任何影响。注意:它是一个静态的原生(native)方法;它告诉当前正在执行的线程把运行机会交给线程池中拥有相同优先级的线程; 它不能保证使得当前正在运行的线程迅速转换到可运行的状态;它仅能使一个线程从运行状态转到可运行状态,而不是等待或阻塞状态。 join:线程实例的方法join()方法可以使得一个线程在另一个线程结束后再执行。如果join()方法在一个线程实例上调用,当前运行着的线程将阻塞直到这个线程实例完成了执行。 package test;public class YieldExample { public static void main(String[] args) { Thread producer = new Producer(); Thread consumer = new Consumer(); producer.setPriority(Thread.MIN_PRIORITY); consumer.setPriority(Thread.MAX_PRIORITY); producer.start(); consumer.start(); }}class Producer extends Thread{ public void run() { for (int i = 0; i < 5; i++) { System.out.println("I am Producer : Produced Item " + i); Thread.yield(); } }} class Consumer extends Thread{ public void run() { for (int i = 0; i < 5; i++) { System.out.println("I am Consumer : Consumed Item " + i); Thread.yield(); } }}package test;public class JoinExample{ public static void main(String[] args) throws InterruptedException { Thread t = new Thread(new Runnable() { public void run() { System.out.println("First task started"); System.out.println("Sleeping for 2 seconds"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("First task completed"); } }); Thread t1 = new Thread(new Runnable() { public void run() { System.out.println("Second task completed"); } }); t.start(); t.join(); t1.start(); }}
全部回答
- 1楼网友:野味小生
- 2021-02-20 13:53
yield:理论上,yield意味着放手,放弃,投降。一个调用yield()方法的线程告诉虚拟机它乐意让其他线程占用自己的位置。这表明该线程没有在做一些紧急的事情。注意,这仅是一个暗示,并不能保证不会产生任何影响。注意:它是一个静态的原生(native)方法;它告诉当前正在执行的线程把运行机会交给线程池中拥有相同优先级的线程;
它不能保证使得当前正在运行的线程迅速转换到可运行的状态;它仅能使一个线程从运行状态转到可运行状态,而不是等待或阻塞状态。
join:线程实例的方法join()方法可以使得一个线程在另一个线程结束后再执行。如果join()方法在一个线程实例上调用,当前运行着的线程将阻塞直到这个线程实例完成了执行。
package test;
public class yieldexample {
public static void main(string[] args) {
thread producer = new producer();
thread consumer = new consumer();
producer.setpriority(thread.min_priority);
consumer.setpriority(thread.max_priority);
producer.start();
consumer.start();
}
}
class producer extends thread{
public void run() {
for (int i = 0; i < 5; i++) {
system.out.println("i am producer : produced item " + i);
thread.yield();
}
}
}
class consumer extends thread{
public void run() {
for (int i = 0; i < 5; i++) {
system.out.println("i am consumer : consumed item " + i);
thread.yield();
}
}
}
package test;
public class joinexample{
public static void main(string[] args) throws interruptedexception {
thread t = new thread(new runnable() {
public void run() {
system.out.println("first task started");
system.out.println("sleeping for 2 seconds");
try
{
thread.sleep(2000);
} catch (interruptedexception e) {
e.printstacktrace();
}
system.out.println("first task completed");
}
});
thread t1 = new thread(new runnable() {
public void run() {
system.out.println("second task completed");
}
});
t.start();
t.join();
t1.start();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯