/*
多线程的创建,方式一: 继承于Thread类
1.创建一个继承于Thread类的子类
2.重写Thread类的run() —> 将此线程执行的操作声明在run()中
3.创建Thread类的子类的对象
4.通过此对象调用start()
例子:遍历100以内的所有的偶数
*
说明两个问题:
问题一:我们启动一个线程,必须调用start(),不能调用run()的方式启动线程
问题二:如果再启动一个线程,必须重新创建一个Thread子类的对象,调用此对象的start()
package com.atguigu.java1;/*** 多线程的创建,方式一: 继承于Thread类* 1.创建一个继承于Thread类的子类* 2.重写Thread类的run() --> 将此线程执行的操作声明在run()中* 3.创建Thread类的子类的对象* 4.通过此对象调用start()* <p>* 例子:遍历100以内的所有的偶数** @author Dxkstart* @create 2021-05-05 20:17*/public class ThradTest {public static void main(String[] args) {//3.创建Thread类的子类的对象MyThread my = new MyThread();//4.通过此对象调用start(): ①启动当前线程 ②调用当前线程的run()my.start();//线程1//问题一:我们不能通过直接调用run()的方式启动线程// my.run();//问题二:再启动一个线程,遍历200以内的偶数。不可以还让已经start()的线程去执行。// my.start(); 报错:IllegalThreadStateException//我们需要重新创建一个线程的对象MyThread my2 = new MyThread();my2.start();//线程2//如下的方法仍然是main线程中执行的for (int i = 0; i <= 200; i++) {if (i % 2 == 0) {System.out.println(Thread.currentThread().getName() + ":" + i + "********mian()******** ");}}}}//1.创建一个继承于Thread类的子类class MyThread extends Thread {// 2.重写Thread类的run()@Overridepublic void run() {for (int i = 0; i <= 200; i++) {if (i % 2 == 0) {System.out.println(Thread.currentThread().getName() + ":" + i);//获取当前线程的名字}}}}
