Tim*_*Tim 4 java multithreading
我在一个复杂的Java应用程序中遇到的问题归结为以下几点:主线程在子线程未完成之前不会继续,尽管我认为应该这样做.示例问题的代码如下所示:
public class ThreadTest {
static class MyThread extends Thread{
public void run(){
for(double i = 0; i<1; i+=0.01){
System.out.println(Math.pow(Math.PI,Math.E)*100.0*i-234.0);
}
}
}
public static void main(String[] args){
(new MyThread()).run();
System.out.println("main thread");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我总是首先从MyThread获取输出(独立于循环中有多少步骤),然后我从主线程获取消息.创建线程的想法是异步执行代码,但在这里我观察到一个明显同步的行为.我错过了什么?
提前致谢!
Pet*_*rey 12
当你调用run()时,你正在调用当前线程中的run()方法!就像为另一个对象调用任何其他方法一样.
如果你想要一个新线程来调用run(),你需要在线程上调用start().
尝试
new MyThread().start();
Run Code Online (Sandbox Code Playgroud)
一种向自己证明这一点的方法是在调试器中逐步执行程序,这将显示只有一个线程.
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |