2. 正文
- java实现多线程: [1]继承Thread类并重写run方法 [2]实现Runnable接口
- 线程Thread中常用的方法: setName(): Thread.currentThread().getName():
static void sleep(); static void yield(): join(): setDeamon()设置后台线程
- 线程安全问题: ---当多个线程共享同一个资源时,对该资源的操作就会出现线程安全问题。
- 手动锁 Lock它是一个接口--lock() unlock()
- 自动锁synchronized
3. 什么是死锁
- 什么是死锁
- 线程都有哪些状态?
- 线程通信( 了解 wait 和sleep的区别)
- 线程池。
如何解决死锁: (1) 减少同步代码块的嵌套。 (2)设置锁的超时时间。(3)可以使用安全类-jdk提高的安全类。4. 线程通信
notify():唤醒。
sleep和wait方法的区别?
(1) 来自不同的类: sleep来自于Thread, wait来自Object类。
(2) 是否释放锁资源: sleep不会释放锁资源。wait会释放锁资源。
(3) 用法: sleep时间到了自然会醒,而wait需要调用notify或notifyAll()方法唤醒。
notify和notifyAll()方法的区别?5. 线程的状态
1.notify随机唤醒等待队列中一个线程,而notifyAll会唤醒等待队列中所有的线程。
复制代码
- NEW:新建状态
- RUNNABLE: start()就绪状态-时间片-运行状态. 统称为RUNNABLE
- BLOCKED: 堵塞状态。加锁时就如该状态
- WAITING: 无期等待: 调用wait方法时会进入该状态
- TIMED_WAITING: 有期等待---当调用sleep方法时就会进入该状态
- TERMINATED: 终止状态。线程的任务代码执行完毕或出现异常。
线程的状态之间可以通过调用相应的方法,进行转换。6. 线程池
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |