1,进程:
应用程序的执行实例,有独立的内存空间和系统资源
2,线程:
CPU调度和分派,的基本单位,进程中执行运算的最小单位,可完成一个独立的顺序控制流程
一,什么叫多线程
如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”
多个线程交替占用CPU资源,而非真正的并行执行
多线程的好处:
1,充分利用CPU的资源
2,简化编程模型
3,良好的用户体验
Thread类的常用方法:
二,Java创建两种线程的方法
1,继承Thread类
2,实现Runnable接口
使用线程的步骤:
定义线程—-创建线程对象—-启动线程
使用继承Thread类的步骤:
1,线程类继承Thread
2,重写run方法
3,创建线程对象,调用start()方法启动线程
线程休眠(sleep()): //线程阻塞
注意:需要做异常处理
单位:毫秒
使用Runnable接口的步骤:
1.定义MyRunnable类实现Runnable接口
2.实现run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程
继承Thread类
1,编写简单,可直接操作线程
2,适用于单继承
实现Runnable接口
1,避免单继承局限性
2,便于共享资源
推荐使用Runnable接口方式
三,线程的五个周期
四,线程调度
int getPriority():
join():
yied():
比较sleep()方法和yield()方法
共同点
Thread类的静态方法
会使当前处于运行状态的线程放弃CPU使用权,将运行机会让给其他线程
不同点
sleep()方法会给其他线程运行机会,不考虑其他线程的优先级,因此较低优先级线程可能会获得运行机会
yield()方法只会将运行机会让给相同优先级或者更高优先级的线程
调用sleep()方法需处理InterruptedException异常,而调用yield()方法无此要求
五,线程同步
同步方法:
线程安全:
总结: