多线程的创建方式一:继承于Thread类
1.创建一个继承于Thread类的子类
2.重写Thread类中的run方法 --> 将此线程中要执行的操作写在run方法中
3.创建Thread类的子类对象
4.通过此对象调用start()
package create_thread;
/**
* 继承Thread类来创建多线程
*
* @author LTH
* @date 2021/4/16 - 14:22
*/
class MyThread extends Thread {
@Override
public void run() {
//打印偶数
for (int i = 0; i < 100; i += 2) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
MyThread m1 = new MyThread();
//start(): ①启动当前线程 ②调用当前线程的run()
//注意:一个线程只能start一次,多次start会产生异常
m1.start();
//main主线程
//打印奇数
for (int i = 1; i < 100; i += 2) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
运行结果中有main线程和自定义线程交错出现。
如果调用的不是start方法而是run方法,则不会交错出现,在此例中表现为先打印自定义线程中的偶数,然后再打印主线程中的奇数,并且自定义线程中的Thread.currentThread().getName()得到的是main主线程的名字。
因为调用run方法相当于对象调用方法,根本没有开启一个线程。所以说start方法是有两个作用的:①启动当前线程 ②调用当前线程的run()