Bootstrap

简单线程调用程序

一、继承Thread类创建线程类
(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代 表了线程要完成的任务。因此把run()方法称为执行体。
(2)创建Thread子类的实例,即创建了线程对象。
(3)调用线程对象的start()方法来启动该线程。

创建Demo线程循环输出:
public class Demo extends Thread {
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(“run demo”);
}
}
}

调用线程的run方法:
public class ThreadDemo {
public static void main(String[] args) {
Demo d = new Demo();//创建一个对象,就是创建一个线程
d.start();//开启线程并知心该线程的run方法
//d.run(); 仅仅是对象调用方法。而线程创建了,没有运行
for(int i = 0; i < 3; i ++) {
System.out.println(“偶尔我先输出”);
}
}
}

调用结果
第一次:在这里插入图片描述
第二次:在这里插入图片描述

第三次:
在这里插入图片描述
调用多次后,会出现先后打印顺序变化,这是因为start()新起一个线程去运行run方法,但是对main这个线程来说,他会继续往下走 执行Demo.run(),一个是新起线程去执行,一个是在本线程(已经在执行的线程)执行。(在程序运行时,主线程已经启动并在运行中,而另外起一个线程start表示线程处于就绪状态,还要等JVM机制调用进入运行状态)。

;