线程代码演练,Thread.Sleep()的机制>> [

问题描述 投票:0回答:2
我无法理解为什么此代码多次运行后会打印“ Apple”而不是“ Orange”。谁能帮忙?

public class Fruit { public static String fruit; public static void main(String args[]) throws InterruptedException { try { Thread t = new AppleThread(); t.start(); } catch (IllegalThreadStateException e) { System.out.println("Thread generated an error."); } fruit = "Orange"; Thread.sleep(100); System.out.println(fruit); } private static class AppleThread extends Thread { @Override public void run() { fruit= "Apple"; } } }

对我来说,它的核心有两个问题:1.)当引用Thread.sleep(100)时,它指的是哪个线程?

2。)我们与分配message =“ orange”的主线程并行执行t.start()。但是,苹果总是打印出来什么,为什么呢? “苹果”似乎总是获得最后的任务。

对此大体上的清理,我们深表感谢。

我无法理解为什么此代码多次运行后会打印“ Apple”而不是“ Orange”。有人可以帮忙吗? public class Fruit {公共静态字符串水果;公共静态void main(...

java multithreading thread-sleep
2个回答
1
投票
1。)当引用Thread.sleep(100)时,它指的是哪个线程?

0
投票
确定,因此休眠的线程是主线程。发生的情况是主线程启动了一个新线程,然后继续执行,将水果静态字段设置为“橙色”,然后进入休眠状态。同时,在主线程进入睡眠状态时,新线程开始运行。
© www.soinside.com 2019 - 2024. All rights reserved.