多线程学习笔记1
来源:互联网 发布:mac网页版qq游戏大厅 编辑:程序博客网 时间:2024/04/20 19:01
sleep()方法阻塞当前线程,但是不释放锁资源
当执行完synchronized(lock){}代码块中的内容后,自动释放锁资源
wait()方法阻塞当前线程,且释放锁资源,且只能被持有相同锁的其他线程唤醒。否则一直阻塞。
notify()方法,严格按照FIFO模式,去持有相同锁的线程队列中唤醒一个线程。这有可能导致死锁。例子就是:当有2个线程的生产者,2个线程的消费者时,会出现死锁。具体:生产者1,进行生产后,进入阻塞,生产者2,判断已经生产过,进入阻塞。消费者1 进行消费后,唤醒生产者1,消费者2,判断已经消费进入阻塞。当生产者1生产后,唤醒生产者2,然后阻塞。生产者2判断已经生产过,直接进入阻塞,然后4个线程就全都阻塞了,造成了死锁,原因是没有线程能再被激活。
所以多线程时使用notifyAll()方法,能够避免出现上述中的死锁,notifyAll()方法唤醒拥有同一锁对象的所有线程。
join()方法保证调用该方法的进程执行结束后,之后的其他线程才可以进行工作
ThreadGroup.enumerate(Thread[] ts)方法只是复制当前线程组及其子组的引用,而不是深层拷贝,意思就是说,调用该方法后,操纵ts的成员,其实就是在操纵ThreadGroup的线程单元
0 0
- 多线程学习笔记1
- 多线程学习笔记1
- 多线程学习笔记(1)
- 多线程学习笔记(1)
- Java多线程学习笔记1
- .net多线程学习笔记1
- 多线程学习笔记(1)
- java 多线程学习笔记1
- Java多线程学习笔记1
- Java学习笔记1-多线程
- python多线程学习笔记1
- Win32多线程程序设计学习笔记 1
- 《Win32多线程程序设计》学习笔记---(1)
- 多线程开发学习笔记(1)
- JAVA多线程学习笔记—1
- ipmsg学习笔记3—多线程1
- IOS学习笔记 多线程基本理论基础(1)
- JAVA多线程学习笔记<1>什么是线程
- Java连接池详解
- 写给初学者04_android_安卓的视图
- oracle 数据之分页查询————rownum
- nodejs安装及常用快捷键
- 浅谈Spring拦截器的实现
- 多线程学习笔记1
- ConstraintLayout的使用
- zabbix发送告警
- myBatis基本配置
- 棋盘里的数学
- Spring Cloud入门1——Eureka&Ribbon&Hystrix
- 检验身份证号码
- 0405
- Ubuntu16.10安装和配置