Kra*_*ken 0 java multithreading
这是我的代码
public class ThreadLearn{
private static class Check implements Runnable{
public void run(){
System.out.printf("\nInCheck %s", Thread.currentThread().getName());
}
}
public static void main(String[] args){
Thread t;
int i=0;
while(i<2){
t = new Thread(new GetData());
t.start();
System.out.printf("\n%s: ", t.getName());
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
InRun Thread-0
Thread-0:
Thread-1:
InRun Thread-1
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
输出不应该是
InRun Thread-0
线程0:
InRun Thread-1
线程1:
一旦t.start()完成,它是否会等待run()执行然后创建第二个线程?如果我想做以下怎么办?
而(必需)
new Thread().start();
在我的run方法中,我可以拥有所有我希望线程并行完成的东西,这样它就不会等待一个线程完成run方法然后创建第二个线程.
谢谢
输出不应该......
不可以.线程彼此独立运行.JVM和操作系统决定何时运行哪个线程.通常,执行两个线程的顺序是不可预测的.当你再次运行程序时,结果可能会有所不同.
一旦
t.start()完成,它是否会等待run()执行然后创建第二个线程?
不,它不会等待.run()新线程的方法可以立即或稍后启动,具体取决于线程的调度方式.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |