多线程
2022-02-28 17:27:10 0 举报
线程的运行过程中状态的变化
作者其他创作
大纲/内容
多线程
wait()
进程:计算机运行的一个程序就是一个进程,一个进程可以有多个线程线程:运行在cpu上的一则程序并发:多线程的交替执行并行:同时执行,指同一时刻静态代理模式:Lamda表达式:()->{}线程优先级:setPriority(10),设置权重,但不一定先执行,需要看是否能争抢到cpu资源同步方法:synchronized作用在方法上同步块:给代码块增加 synchronized关键字死锁:对共享资源的抢夺,会造成死锁,A->B B->A (A需要B中的资源,B需要A中的资源)形成死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。解决死锁的办法:加锁、抢夺资源给一个线程、中止进程Lock:可重入锁ReentrantLock线程池:防止线程被浪费,反复创建销毁会浪费内存
等待队列
线程状态变化
阻塞
拿到对象锁
1、notify()2、notifyAll()
创建
就绪
1、run()结束2、main()结束
1、sleep()结束2、join()3、等待用户完毕
四种创建线程的方式:1、继承Thread类,重写run()方法2、实现Runable接口,重写run()方法3、实现Callable接口,重写call()方法3、线程池创建面试题:Runable和Callable的区别?
1、CPU时间片用完2、yieId()
synchronized
运行
OS选中,获获取到CPU时间片
start
1、sleep()2、join()3、等待用户输入
死亡
锁池队列
0 条评论
下一页