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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小康康 于 2012-9-27 13:19 编辑

   对于线程这块儿自己之前也有些疑惑,之前也有朋友询问过,现在自己总结一下,给需要的朋友。


1、 线程间通讯:就是多个人线程操作同一个资源。比如
输入煤和输出煤,操作的都是煤炭资源;隶属于两个线程,由于CPU有切换,所以会导致输入的煤对象和输出的煤对象不一样的情况。
①解决方式一:加上锁,来解决不变性的问题。即input
中的run()加锁; output 中的 run()加锁 ;
答案:不能解决问题,因为分别属于两个线程,不属于同一个锁。所以只能用唯一的对象resource作为参数进行传递。②解决方式二:使用等待唤醒机制,来解决间隔输出,就是你放入一个数据,我取出一个数据。

2、多线程通讯时非常重要的机制——等待唤醒机制
wait() :让线程处于冻结状态,被wait的线程会被存储到线程池中。
② notify() :
唤醒线程池中任意一个线程。
③ notiry() : 唤醒线程池中所有线程。注意:这些方法都必须定义在同步中。因为这些方法是用于操作线程状态的方法,必须要明确到底操作的是哪个锁上的线程。即 一个锁中的等待和唤醒
不影响
另一个锁中的等待和唤醒。

复制代码

评分

参与人数 1技术分 +1 收起 理由
王海宇 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马