继承Thread
- 自定义线程类继承Thread类
- 重写run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
我们新建一个NestThread类
继承Thread
创建线程方式一:继承Thread类,重写run()方,调用start开启线程
写一个run方法和一个main方法
2个方法里面都输出一句话
我们输出一下
就会发现输出的全是main方法
那怎么开启run线程呢?
我们new一个TestThread 也就是创建一个线程对象
然后我们在调用start();方法
我们输出一下
就会发现main方法执行完之后执行了run方法
那我们将start改成run试试看
就会发现执行了run方法在执行main方法,按照正常的运行顺序执行
我们把main方法for循环数值改成1000
在把run改成start
运行一下
就会发现**“我在看代码"里面夹着"我在学习多线程”**
因为start()方法是开启线程
而run()方法 只是单纯的调用run ()方法,执行run方法
所以调用start方法是开启线程,使main方法和run方法一起开始
只不过我们CPU运行太快,数量值较少的时候会看不出来
就像这张图片
调用run方法只是,先执行run方法,执行完之后在回到主线程,继续执行
而开启了线程,是主线程和子线程一起执行
线程不一定执行,CPU调度执行,每次执行都不一样,因为我们是单核的只有一个CPU所以同一时间只能输出一次
总结:线程不一定立即执行,由CPU调度执行