总结:发送线程Sender().和接收线程Receiver()

虽然,这里的Sender()发送线程和Receiver()都有相同的睡眠时间,但是由于线程调度的不确定性,是的发送线程Sender每次发送的数据和接收线程Receiver每次

接收的数据不一样。而我们希望的是发送线程每次发送的数据都能够让接收线程Receiver正确的接收 到,这就必须增加方法的锁定机制。

package com.a.b;

//package com.a.b;

class Buffer2 {// 这里注意java源文件不是Buffer.java(文件名)否则运行出错。根本无法显示
private int value; // 这里java圆文件是任意的,但是绝对不是Buffer void put(int i) {
value = i;
} int get() { return value;// 返回值
} } class Sender extends Thread {
// 发送线程
private Buffer bf; public Sender(Buffer bf) {
this.bf = bf; } @Override
public void run() {
for (int i = 1; i < 6; i++) {
bf.put(i);// 这个调用带参的put()方法
System.out.println("Sender put:" + i);
try {
sleep(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} public static void main(String[] args) {
Buffer bf2 = new Buffer();// 这个和类名一致。否则报错
(new Sender(bf2)).start();// 这里的Sender这个类的构造方法里本来就有个参数,、、我疑问为什么这里的构造方法
// 调用线程的start()方法不是new一个线程的对象,而是一个类的,你看这个类不是继承了Thread类吗?也就是说它可以继承
// 线程类的属性和方法---------是可以的
(new Receiver(bf2)).start();// 这里的括号没有打上,那么它会调用的是什么方法呢?有什么关系呢?
} } // 这里不是类的对象吗: class Receiver2 extends Thread {// 这是个类,和Sender是一样的?
private Buffer bf; public Receiver2(Buffer bf) {
this.bf = bf; } @Override
public void run() {
for (int i = 0; i < 6; i++) {
System.out.println("\t\t Receiver get:" + bf.get());
try {
sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

  

最新文章

  1. js-JavaScript高级程序设计学习笔记11
  2. 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)
  3. C# 开发XML Web Service与Java开发WebService
  4. Java 反编译工具几枚(class转java)
  5. acm数据结构整理
  6. 4种字符串匹配算法:KMP(下)
  7. Qt部件学习之-烧鹅
  8. Servlet的学习之Request请求对象(1)
  9. java去全半角空格,trim(), replaceAll(&quot; +&quot;,&quot;&quot;),replaceAll(&quot;\\s*&quot;, &quot;&quot;), replaceAll(&quot; | &quot;, &quot;&quot;)
  10. svn 安装网站
  11. python的数据类型及操作
  12. python每天一个小练习-列表元素非唯一
  13. 静默安装Oracle12.2数据库
  14. Maven使用(一)—— Maven的安装与全局配置
  15. Docker 集群Swarm创建和Swarm Web管理
  16. LeetCode 520 Detect Capital 解题报告
  17. SmtpClient SSL 发送邮件异常排查
  18. 浏览器Quirksmode(怪异模式)与CSS1compat
  19. redis windows 版配置使用
  20. css 自定义checkbox多选复选框样式

热门文章

  1. ParentNodes、childNodes、children之间的区别
  2. RabbitMQ(1) 核心概念
  3. Sql Server- 性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
  4. css hover伪类选择器与JQuery hover()方法
  5. jfc在jsp页面画图,不将图片存在服务器端,只存入会话session(可用)
  6. CUDA Samples: Streams' usage
  7. 2PC
  8. iOS-----GitHub上比较齐全的iOS 工具和App
  9. Git使用总结(廖雪峰git)
  10. 【剑指offer】第一个只出现一次的字符