多线程
程序program
进程process
线程thread
创建线程两种方法
1.继承Thread类
class MyThread extends Thread{
重写线程的运行方法
run()
}
2.实现Runnable接口
class MyRunnable implements Runnable{
重写线程的运行方法
run()
}
Thread的构造器
Thread()
Thread(“线程名”)
Thread(Runnable r)
Thread(MyRunnable,“线程名”)
线程的启动
不是去调用run() 而是调用start(),
setName/getName : 设置或者获取线程名
static Thread currentThread():返回当前线程对象
join()/join(毫秒):
join():在start()后 去调用join() 阻塞
t1.start()
t1.join() t1.join(100)
t2.start()
t3.start()
t1线程执行完毕 t2、t3交替执行; t1线程执行100ms后 t1、t2、t3交替执行
yield():让步
重新排号,自己,跟自己优先级相同的,高于自己的
若没有同优先级的线程,忽略
sleep(毫秒): 令当前的线程在指定的时间内放弃对cpu控制
让其他线程有机会执行,时间到了 这个线程重新排队
调度
调度策略
时间片:时间轮询
抢占:高优先级的线程抢占CPU
java:同优先级时间片 高优先级 抢占
setPriority(1-10) 优先级 从小到大
getProority()
默认5
MAX_PRIORITY 10
MIN_PRIORITY 1
NORM_PRIORITY 10
线程生命周期中的五种状态:
新建
就绪
运行
阻塞
死亡
生命周期
阻塞
sleep()
join()
新建 start()> 就绪 cpu调度> 运行(run) > 死亡
<yeild