- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序设计第七次课
进程与线程 线程的概念模型 虚拟的CPU,由java.lang.Thread类封装和虚拟。 CPU所执行的代码,传递给Thread类对象 CPU所处理的数据,传递给Thread类对象 线程操作的相关方法 线程控制基本方法 同步与死锁 测试死锁 典型的“哲学家就餐问题” 线程操作案例——生产者及消费者 wait()和notify()/notifyAll() wait(): wait()允许我们将线程置于“睡眠”状态,而且又积极的等待条件改变被“唤醒”。线程首先必须synchronized()才能wait,线程wait的时候交出控制权。 notify()/notifyAll():wait的线程被唤醒,从新争夺控制权。Notify叫醒等待队列的第一个线程,notifyAll叫醒等待队列的所有线程。 线程操作案例——生产者及消费者 wait()和notify()/notifyAll():MultipleThreadDemo.java 线程操作案例——生产者及消费者 wait()和notify()/notifyAll():MultipleThreadDemo.java 线程操作案例——生产者及消费者 wait()和notify()/notifyAll():MultipleThreadDemo.java 线程操作案例——生产者及消费者 程序的基本实现 因为现在程序中生产者不断生产的是信息,而消费者不断取出的也是信息,所以定义一个保存信息的类 —— Info.java。 class Info { // 定义信息类 private String name = 李兴华; // 信息名称,指定默认值 private String content = JAVA讲师; // 信息内容,指定默认值 public String getName() { // 取得信息名称 return name; // 返回信息名称 } public void setName(String name) { // 设置信息名称 = name; // 设置name属性内容 } public String getContent() { // 取得信息内容 return content; // 返回信息内容 } public void setContent(String content) { // 设置信息内容 this.content = content; // 设置content属性内容 } } 线程操作案例——生产者及消费者 生产者 class Producer implements Runnable { // 定义生产者线程 private Info info = null; // 保存Info引用 public Producer(Info info) { // 通过构造方法设置Info属性内容 = info; // 为info属性初始化 } public void run() { // 覆写run()方法 boolean flag = false; // 定义标记位 for (int i = 0; i 50; i++) { // 循环50次 if (flag) { // 如果为true,则设置第一个信息 .setName(李兴华); // 设置信息名称 Thread.sleep(90); // 加入延迟,处理异常 .setContent(JAVA讲师); // 设置信息内容 flag = false; // 修改标记位 } else { // 如果为false,则设置第二个信息 .setName(mldn); // 设置信息名称 Thread.sleep(90); // 加入延迟,处理异常 .setContent(); // 设置信息内容 flag = true; // 修改标记位 } } } } 线程操作案例——生产者及消费者 消费者 class Consumer implements Runnable { // 定义消费者线程 private Info info = null; // 保存Info引用 public Consumer(Info info) { // 通过构造方法设置Info属性内容 = info; // 为info属性初始化 } public void run() { // 覆写run()方法 for (int i = 0; i 50; i++) { // 循环50
您可能关注的文档
最近下载
- 医用氧生产工艺规程.doc VIP
- 200吨汽车吊书说明书.pdf VIP
- 0.中国中铁建筑施工典型异常工况安全处置工作指引宣贯材料.pptx VIP
- 2025年河北唐山市路南区专项选聘教师168人笔试备考题库及答案解析.docx VIP
- HanbellRC系列半封闭螺杆压缩机产品样本-RC系列.PDF VIP
- 15J401 钢梯标准图集.pptx VIP
- 山东科学技术版劳动实践指导手册六年级第2课整理与收纳居室整理与清洁学会消毒 教案.docx VIP
- 技嘉主板H610M S2 DDR4 (rev.1.1)用户手册简体中文(版本 1001).pdf
- 2025年河北唐山市路南区选调教师30人笔试备考试题及答案解析.docx
- 2024单簧管协奏曲《帕米尔之音》演奏技巧分析5300字.docx VIP
文档评论(0)