多线程程序每次都有不同的输出 [英] Multithreading program has different output each time
问题描述
当我尝试多次执行以下multhiThreading代码时,输出与前一个不同.是因为JVM行为还是其他原因.请帮我一个.
when I'm trying to execute the following multhiThreading code multiple times ,the output is not same as previous one . Is that because of JVM behaviour or may be some other reason . please help me some one.
program:
package example.thread.com;
class MyThread1 implements Runnable {
Thread t;
MyThread1(String s) {
t = new Thread(this, s);
t.start();
}
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Thread Name :"
+ Thread.currentThread().getName());
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}
public class RunnableThread1 {
public static void main(String args[]) {
System.out.println("Thread Name :" + Thread.currentThread().getName());
MyThread1 m1 = new MyThread1("My Thread 1");
MyThread1 m2 = new MyThread1("My Thread 2");
}
}
输出:如果我第一次运行
output: if i run 1st time
Thread Name :main
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
输出:如果我第二次运行
output: if i run 2nd time
Thread Name :main
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
输出:如果我第三次运行
output: if i run 3rd time
Thread Name :main
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
像这样,请建议.....
like this please suggest .....
推荐答案
这正是示例的重点.它表明线程是一时兴起地调度的,并且不能保证输出顺序发生.
This is precisely the point of the example. It shows that threads are scheduled at a whim and that output is not guaranteed to occur in order.
在其他编程语言和系统中,期望输出错误的消息并非没有道理,例如:
In other programming languages and systems it is not unreasonable to expect mangled output such as:
Thread Name :main
Thread Name :My Thread 1
Thread NThread Name :My Thread 2ame :My Thread 2
Thread Name :My Thread 1
Thread Name :My Thread 2
Thread Name :My Thread 1
ThreaThread Name :My d Name :My ThrThread 2ead 1
Thread Name :My Thread 2
Thread Name :My Thread 1
这篇关于多线程程序每次都有不同的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!