没有合适的资源?快使用搜索试试~ 我知道了~
java—多线程的通信、生产者与消费者模式
1 下载量 38 浏览量
2020-12-21
02:57:55
上传
评论
收藏 67KB PDF 举报
温馨提示
试读
2页
一、重点知识 isDaemon 判断是否为守护线程。 run方法是不能用synchronized修饰,他是继承来的,不能改变其结构,而且,如果run方法加了synchronized,就变成单线程了,就没有并发了。 只要不是静态的同步方法,同步方法默认的同步监视器就是this。 静态的同步方法的同步监视器为类.class wait方法如果不是同步监视器去调用的话会报IllegalMonitorStateException异常 如果没有线程处于wait状态,调用notify此时是一个空唤醒 stringBuffer中的同步方法,都是非静态的,因为共用一个this锁就可以了,线程进去调用他的一个方法
资源详情
资源评论
资源推荐
java—多线程的通信、生产者与消费者模式多线程的通信、生产者与消费者模式
一、重点知识一、重点知识
isDaemon 判断是否为守护线程。
run方法是不能用synchronized修饰,他是继承来的,不能改变其结构,而且,如果run方法加了synchronized,就变成单线程
了,就没有并发了。
只要不是静态的同步方法,同步方法默认的同步监视器就是this。
静态的同步方法的同步监视器为类.class
wait方法如果不是同步监视器去调用的话会报IllegalMonitorStateException异常
如果没有线程处于wait状态,调用notify此时是一个空唤醒
stringBuffer中的同步方法,都是非静态的,因为共用一个this锁就可以了,线程进去调用他的一个方法时就不能另一个线程调
用它的其他方法,因为他有同步锁,且都是this。
二、重点问题二、重点问题
关于线程通信中wait放在while中还是if中的问题
线程通信中判断临界值条件一般用while而不用if 因为while可以保证不会因为异常而导致结束wait状态,if如果出现异常会结束
等待状态执行下面的代码,这样就达不到我们的目的了。
三、课堂知识三、课堂知识
3.1、同步方法
同步代码块:使用synchronized关键字包裹了一块代码,让这块代码同步执行。就是每次只能一个线程来执行。
同步方法:使用synchronized关键字修饰一个方法,这个方法同步执行。就是每次只能一个线程来执行。
普通的方法:对象调用。锁定的对象,就是this对象。
静态的方法:类调用。锁定的对象,就是类名.class
同步的原理:利用对象的互斥锁。
每个线程来访问,只能有一个线程进入执行,第一个动作锁对象(上锁)。来保证其他线程不能进入执行。等到该线程结束这个
同步代码块或者同步方法,释放锁对象(开锁),才允许其他的线程来访问。
有同步方法,线程安全的类:
StringBuffer
Vector
HashTable
Collections,集合的工具类
3.2、线程之间的通信
线程之间的通信:wait(),notify(),notifyAll()
wait()——>让线程进入阻塞状态,暂停执行。一直阻塞
notify()——>唤醒线程,wait()住的线程,被唤醒。如果多个线程wait()了,唤醒其中的一个。
notifyAll()——>唤醒所有。
语法要求:必须在同步中,由同步的锁对象来调用。否则java.lang.IllegalMonitorStateException异常。
3.3、生产者消费者模型:
生产者(线程t1)负责生产产品,存入容器中(固定容量),消费者(线程t2)从容器中获取产品消费掉。
容器:
生产者:持有资源,生产产品,存入容器中
weixin_38630091
- 粉丝: 7
- 资源: 875
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0