····程序是放在线程里面运行的 ,线程是放在cpu里面运行的。
·······并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
[外链图片转存失败(img-cUOvJNwv-1564402999287)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1564398629761.png)]
······把多个线程交给cpu交替处理,会产生不可共性,也就会出现bug
·········创建线程的俩种方法:1、直接通过线程的实例 重写run方法
2、实现runnable接口
、、、核心性能:提高效率
···步骤
1写一个类直接继承Thread类重写run方法。
2该run()方法的方法体就代表了线程需要完成的任务。
3创建Thread子类的实例。
4调用线程对象的start()方法来启动该线程
[外链图片转存失败(img-YWDDCi3X-1564402999289)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1564401156659.png)]
[外链图片转存失败(img-rmrHkvUf-1564402999290)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1564401203846.png)]
使用Runnable的优点
- 适合多个相同的程序代码的线程去处理同一个资源
- 可以避免java中的单继承的限制
- 增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
- 线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类
线程的生命周期
New(初始化状态)
Runnable(可运行/运行状态)
Blocked(阻塞状态)
Waiting(无时间限制的等待状态)
Timed_Waiting(有时间限制的等待状态)
Terminated(终止状态)