创建多线程的第一种方式:
定义Thread类的子类,并重写run()方法:
* 实现步骤: 1.创建一个Thread类的子类 2.在Thread类的子类中重写run方法,设置线程任务(开启线程要干什么) 3.在Thread类的子类对象 4.调用Thread类中的start()方法,开启新的线程,执行run方法 void start()是线程开始执行;java虚拟机调用该线程的run方法 结果是两个线程并发的运行,当前线程main线程和另一个线程(创建的新线程,执行run方法)。 多次启用一个线程是非法的,特别是当线程已经结束执行后,不能再重新启动。 java程序属于抢占式调度,哪个线程优先级较高,哪个线程就先执行,同一个优先级,随机选择一个执行 */
首先创建MyThread类:
package demo01Thread;
public class MyThread extends Thread {
@Override
public void run() {
super.run();
//2.在Thread类的子类中重写run方法,设置线程任务
for(int i=0;i<20;i++){
System.out.println("run:"+i);
}
}
}
在创建Thread01类:
package demo01Thread;
/*
实现步骤:
1.创建一个Thread类的子类
2.在Thread类的子类中重写run方法,设置线程任务(开启线程要干什么)
3.在Thread类的子类对象
4.调用Thread类中的start()方法,开启新的线程,执行run方法
void start()是线程开始执行;java虚拟机调用该线程的run方法
结果是两个线程并发的运行,当前线程main线程和另一个线程(创建的新线程,执行run方法)。
多次启用一个线程是非法的,特别是当线程已经结束执行后,不能再重新启动。
java程序属于抢占式调度,哪个线程优先级较高,哪个线程就先执行,同一个优先级,随机选择一个执行
*/
public class Thread01 {
public static void main(String[] args) {
//3.创建Thread类的子类对象
MyThread mt=new MyThread();
//4.调用Thread类中的start()方法,开启新的线程,执行run方法
mt.start();
for(int i=0;i<20;i++){
System.out.println("main"+i);
}
}
}
结果: