
线程执行顺序
问题:
在如下代码中,为什么线程执行顺序与预想不符?
public class testmythread {
public static void main(string[] args) {
myrunnable myrunnable = new myrunnable();
thread thread = new thread(myrunnable, "myrunnable");
thread.start();
system.out.println(thread.getname());
}
}
public class myrunnable implements runnable {
@override
public void run() {
for (int i = 0; i < 10; i++) {
system.out.println("myrunnable" + new date().gettime() + "---" + i + "--count");
}
}
}答案:
实际上,线程执行顺序与代码顺序无关。多线程程序是并发的,这意味着不同的线程可以同时执行,并且执行顺序可能会因系统而异。在给定的示例中,可能出现以下执行顺序:
- main 方法中的打印语句执行,输出线程名称。
- myrunnable 类的 run 方法执行,输出计数消息。
但是,由于线程调度器的不可预测性,实际执行顺序可能会有所不同,即 myrunnable 线程可能先执行,然后再输出线程名称。
自定义设置的程度更高可以满足大部分中小型企业的建站需求,同时修正了上一版中发现的BUG,优化了核心的代码占用的服务器资源更少,执行速度比上一版更快 主要的特色功能如下: 1)特色的菜单设置功能,菜单设置分为顶部菜单和底部菜单,每一项都可以进行更名、选择是否隐 藏,排序等。 2)增加企业基本信息设置功能,输入的企业信息可以在网页底部的醒目位置看到。 3)增加了在线编辑功能,输入产品信息,企业介绍等栏
原因:
这是因为 java 使用时间片调度器,它在不同的线程之间共享处理器时间。当一个线程执行时,可能会被中断并允许另一个线程执行。
调整打印输出以显式显示线程执行顺序:
为了更明确地显示线程执行顺序,可以在 myrunnable 类中添加一个 println 语句,如下所示:
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Thread " + Thread.currentThread().getName() + " started");
for (int i = 0; i < 10; i++) {
System.out.println("MyRunnable" + new Date().getTime() + "---" + i + "--count");
}
System.out.println("Thread " + Thread.currentThread().getName() + " finished");
}
}这样,你就可以观察到哪个线程在特定时间输出消息,从而进一步了解线程执行顺序。









