小弟初接触多线程,这段代码的输出不懂,该怎么解决
小弟初接触多线程,这段代码的输出不懂
难道不应该输出,one two three么
------解决方案--------------------
多输出几次你会发现不是固定的。
------解决方案--------------------
这个是并发的,main是一个线程,还有你的3个线程,并发(不是同时)运行。我也不是特别懂,期待哪位大牛给解释一下。
------解决方案--------------------
线程的特点,启动后由虚拟机进行调度(java是抢占式的),所以输出不会固定的,多运行几次就能发现。
------解决方案--------------------
这个就是多线程的特点了,运行的次序不是固定的。
------解决方案--------------------
多运行几次,你会发现现线程是抢占资源的,具有随意性,并不会按照你的顺序执行
- Java code
public class MultThread extends Thread{ String name; //初始化name变量 public MultThread(String name){ this.name=name; } //线程 public void run(){ try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("Interrupt exception"); // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("thread name: "+name); } /** * @param args */ public static void main(String[] args) { // TODO Autgenerated method stub //创建多个线程 MultThread mt1=new MultThread("one"); MultThread mt2=new MultThread("two"); MultThread mt3=new MultThread("three"); mt1.start(); mt2.start(); mt3.start(); } } 输出结果是thread name: one thread name: three thread name: two
难道不应该输出,one two three么
------解决方案--------------------
多输出几次你会发现不是固定的。
------解决方案--------------------
这个是并发的,main是一个线程,还有你的3个线程,并发(不是同时)运行。我也不是特别懂,期待哪位大牛给解释一下。
------解决方案--------------------
线程的特点,启动后由虚拟机进行调度(java是抢占式的),所以输出不会固定的,多运行几次就能发现。
------解决方案--------------------
这个就是多线程的特点了,运行的次序不是固定的。
------解决方案--------------------
多运行几次,你会发现现线程是抢占资源的,具有随意性,并不会按照你的顺序执行