进程: - 指一个内存中运行的应用软件,每个进程都有一个独立内存空间。
线程: - 进程中的执行路径,每个进程至少一个线程,共享一个内存空间。
分时调度
抢占式调度
同步:排队执行,效率低安全
异步:同时执行,效率高不安全
并发:指两个或多个事件在同一个时间段内 发生。
并行:指两个或多个事件在同一个时刻发生(同时发生)。
每个线程都有自己的栈空间,公用一份堆内存。
继承Thread的子类需重写run方法
run方法不直接调用,而是调用start方法来启动。
创建一个任务对象
创建一个线程,并为其分配一个任务
执行线程
与继承Thread相比的优势:
.currentThread() 可以获取当前线程
.currentThread().getName()获取线程名字
Thread.sleep()指定时间休眠
线程阻塞:需要比较消耗时间的操作
线程中断:由线程自身决定。需做标记。
守护线程:用于守护‘用户线程’。当最后一个用户线程结束,所有守护线程自动结束。 .setDaemon(true)
synchronizez关键字
格式: synchronized(锁对象){
}
看同一把锁
在方法的public后面加上synchronized关键字
同步代码块和同步方法都是隐式锁
Lock类 子类:ReenntrantLock
lock方法,unlock方法 自己锁和解锁
ReenntrantLock(fair:true)则创建了公平锁,谁排队先抢到谁占有
线程死锁
多线程通信
wait()睡眠方法,notify()唤醒方法
Thread.state()
new
Runnable
Blocked
Waitting
TimedWaitting
Terminated
原文:https://www.cnblogs.com/sanver/p/13932934.html