Tha*_*gnv -2 java multithreading
我有一个简单的线程测试:
package Thread;
class Sum extends Thread {
int low, up, S;
public Sum(int a, int b) {
low = a;
up = b;
S = 0;
System.out.println("This is Thread " + this.getId());
}
@Override
public void run() {
for (int i = low; i < up; i++) {
S += i;
}
System.out.println(this.getId() + ":" + S);
}
}
public class Tester {
public static void main(String agrs[]) {
Sum T1 = new Sum(1, 100);
T1.start();
Sum T2 = new Sum(10, 100);
T2.start();
System.out.println("Main process terminated");
}
}
Run Code Online (Sandbox Code Playgroud)
但我不明白什么时候执行run()方法,它返回相同的:
This is Thread 8
This is Thread 9
Main process terminated
9:4905
8:4950
Run Code Online (Sandbox Code Playgroud)
这意味着在T1和T2启动后执行run()方法.我仍然认为当调用start()方法时,run()将被执行.谢谢提前!
当您调用start()线程对象时,它会调用该run()方法.
如有疑问,请阅读文档:Thread #start():
导致该线程开始执行; Java虚拟机调用此线程的run方法.
结果是两个线程并发运行:当前线程(从调用start方法返回)和另一个线程(执行其run方法).
不止一次启动一个线程永远不合法.特别是,一旦完成执行,线程可能无法重新启动.
推荐阅读:
| 归档时间: |
|
| 查看次数: |
2507 次 |
| 最近记录: |