A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 水蛭31 中级黑马   /  2015-6-19 11:13  /  710 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程——线程池
当线程进入冻结状态是, 这个等待的线程存放在哪里呢?
线程运行的时候, 内存中会建立一个叫做线程池的,等待线程都存放在线程池中, 当notify的时候, 都是唤醒的是线程池中的线程,当线程池中有许多的线程都在等待,通常是唤醒第一被等待的线程,按照顺序来叫醒,
notify()只能唤醒线程池中的第一个等待的线程,如果需要全部唤醒的话,就需要notifyAll();
唤醒线程池中所有等待的线程(不管是本方的线程,还是另一个线程);
说明:想wait(),notify(),notifyAll(),这些都不是Thread类中的方法,而是继承来自Object类中的方法,
定义线程的,怎么定义在Object类中呢?
这里需要调用这些方法, 该线程必须拥有此对象的监视器(锁),而同步才有锁, 而且是同一个对象的锁,
而两个对象的锁是不一样的, 因此需要来标识是哪个对象的锁。
而锁是任意的对象,所以可以被任意对象调用的方法(wait(),notify(),notifyAll()),就定义在objec类中了,




1 个回复

倒序浏览
额。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马