【发布时间】:2014-12-06 17:01:30
【问题描述】:
为什么每次运行这个程序时输出的顺序都不一样?是否由于多个线程同时尝试访问共享资源。因此,线程的执行方式将是随机的吗?
我的输出
java MyThreadExample 来自线程 1 的你好 来自线程 3 的你好 你好来自线程 4 来自线程 2 的问候
java MyThreadExample 来自线程 1 的你好 来自线程 3 的你好 来自线程 2 的你好 来自线程 4 的您好
java MyThreadExample
Hello from thread 1
Hello from thread 4
Hello from thread 3
Hello from thread 2
代码:
import java.io.*;
import java.lang.*;
class MyThreadExample {
public static void main(String[] args) {
HelloThread ht1 = new HelloThread(1);
HelloThread ht2 = new HelloThread(2);
HelloThread ht3 = new HelloThread(3);
HelloThread ht4 = new HelloThread(4);
ht1.start();
ht2.start();
ht3.start();
ht4.start();
}
}
class HelloThread extends Thread {
int threadID;
HelloThread(int threadID) {
this.threadID = threadID;
}
public void run() {
System.out.println("Hello from thread " + this.threadID);
}
} // end Thread
【问题讨论】:
-
它与操作系统有关。一旦线程启动,Os 就会调度线程。有些获得高优先级,有些获得低优先级。
-
在编写任何此类代码之前,您应该阅读并发/多线程的基础知识。如果你这样做了,那么你就不会有这个问题了。
标签: java multithreading operating-system