java中多线程程序是怎样执行的??

下面程序中执行newNewThread("First");后调用NewThread类的NewThread(Stringth)方法,接着往下执行到t.start();后,为... 下面程序中执行new NewThread("First");后调用NewThread类的NewThread(String th)方法,接着往下执行到t.start();后,为什么不是执行public void run()方法中的语句进而输出System.out.println("测试三");和System.out.println("测试四");后休眠1秒,而是执行System.out.println("测试二");(我是依结果来的) 运行结果为: New thread:Thread[First,5,main] 测试一 测试二 (“测试二”在这输出不明白,我觉得在这地方输出测试三/四,然后等待1秒 New thread:Thread[Second,5,main] 测试一 测试二 New thread:Thread[Third,5,main] 测试一 测试二 测试三 First:3) New thread:Thread[Second,5,main] 测试一 测试二 New thread:Thread[Third,5,main] 测试一 测试二 测试三 First:3 。 。 。 package hello; public class Main { public static void main(String[] args) { new NewThread("First"); new NewThread("Second"); new NewThread("Third"); try { Thread.sleep(10000); } catch(InterruptedException e) { System.out.println("Mainthread Interrupted"); } System.out.println("测试五"); System.out.println("Main thread exiting"); } } class NewThread implements Runnable { String name; Thread t; NewThread(String th) { name =th; t=new Thread(this,name); System.out.println("New thread:"+t); System.out.println("测试一"); t.start(); System.out.println("测试二"); } public void run() { try {System.out.println("测试三"); for(int i=3;i>=0;i--) { System.out.println(name+":"+i); System.out.println("测试四"); Thread.sleep(1000); } }catch(InterruptedException e) { System.out.println(name+"Interrupted"); } System.out.println(name+"exiting)"); } } 展开
 我来答
忻河伏气
2019-03-07 · TA获得超过919个赞
知道小有建树答主
回答量:1488
采纳率:100%
帮助的人:6.8万
展开全部
Thread.start()只是代表启动了一个线程,什么时候执行这要依赖于操作系统对CPU时间片的分配,另外启动一个线程是需要资源的,所以肯定会存在延迟,为什么会执行“测试二”,搞清楚,这里已经是两个线程了,一个线程是t,另外一个线程是主线程,也就是创建NewThread的线程。所以,t怎么会阻碍主线程的运行呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式