线程的竞争关系:死锁和饥饿。
而线程的调度由操作系统调度:1)一次只能一个线程在临界区
2)不能让一个线程无限留在临界区
3)不能强迫一个线程无限等待进入临界区。特别,进入临界区的任一线程不能妨碍正等待进入的其他线程
下面是线程之间协作的演示,没有加锁

public class buffer {//缓冲区private int val;//共享变量public void ut(int i){this.val=i;}public int et(){return val;}
}
class Sender extends Thread{//发送线程private buffer buf;public Sender(buffer buf) {this.buf=buf;}public void run() {for(int i=1;i<6;i++){//连续向缓冲区发送信息buf.put(i);//指定缓冲区System.out.println("sender put:"+i);try {sleep(1);} catch (InterruptedException e) {}}}}
class Receiver extends Thread{//接收线程private buffer buf;public Receiver(buffer buf) {this.buf=buf;}public void run() {for(int i=1;i<6;i++){//连续从缓冲区接收信息System.out.println("                       Receiver get:"+buf.get());try {sleep(1);} catch (InterruptedException e) {}}}public static void main(String args[]){buffer buf=new buffer();(new Sender(buf)).start();(new Receiver(buf)).start();}
}

运行结果1:
sender put:1
Receiver get:1
Receiver get:1
sender put:2
Receiver get:3
sender put:3
Receiver get:3
sender put:4
Receiver get:4
sender put:5
运行结果2:
sender put:1
Receiver get:1
sender put:2
Receiver get:2
Receiver get:3
sender put:3
Receiver get:4
sender put:4
Receiver get:5
sender put:5

Java--面包师与消费者1(发送与接收线程)相关推荐

  1. Java中udp/tcp的发送和接收

    一.UDP协议发送数据 发送处理过程: 创建发送端Socket对象--DatagramSocket 创建数据并将数据打包到DatagramPacket对象 通过Socket发送 释放相关资源 发送处理 ...

  2. [Java网络编程基础]TCP发送和接收数据

    代码如下: package ClientPack;import java.io.IOException; import java.io.OutputStream; import java.net.In ...

  3. [Java网络编程基础]UDP发送和接收数据

    代码如下: package InetAddressPack;import java.io.IOException; import java.net.*; import java.nio.charset ...

  4. Java中通过TCP协议发送和接收数据-Socket编程

    TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...

  5. java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具

    /** 根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面 */ import java.net.*; import java.awt.*; import java.awt.eve ...

  6. 如何发送和接收RTP封包的H264,用FFmpeg解码

    这篇文章给大家介绍怎么打包H264分片到RTP包,并且实现一个播放程序演示接收RTP包和用FFmpeg解码.为了让大家更了解H264打包成RTP的细节,有必要罗嗦一下向大家介绍一些相关的基础知识,下面 ...

  7. JAVA ActiveMQ消息发送和接收

    JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...

  8. java kafka消息的发送与接收

    java kafka消息的发送与接收 消息队列在java EE级开发是很常用到的工具之一,在众多消息队列当中,active mq与kafka相对比较受开发者的喜爱,那么kafka是怎样实现消息的发送与 ...

  9. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

最新文章

  1. rancher使用fluentd-pilot收集日志分享
  2. 关于运算符operator重载出错解决方法
  3. java学习:理解abstract
  4. wxWidgets:多线程概述
  5. si4438-IAR不能接收和发送的问题
  6. 停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...
  7. python 隐含波动率_【BSM模型】用实际市场数据计算隐含波动率并验证波动率微笑...
  8. 中国内置扬声器市场趋势报告、技术动态创新及市场预测
  9. linux-LINUX试题
  10. python装b代码_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”
  11. Web开发常用代码:背投广告
  12. 一文搞懂 | Linux 时钟子系统
  13. 电容器充放电的原理是什么?
  14. 计算机 无法自检,电脑开机不能自检的五大原因
  15. SD卡格式化重建分区
  16. 遇到视频聊天软件 v2.2.35
  17. 关于算法的学习以及一些总结(二)——数据结构
  18. (单击)双击直接修改内容的代码
  19. springboot 配置文件 date-format 失效
  20. 解决管理问题的基本思维方式

热门文章

  1. IOT开发的学习-linux#5 gcc编译生成一个c语言实行文件,用sh调用实行
  2. Dev-C++的使用方法
  3. 川崎机器人总线通信_川崎机器人TCP/IP通信方法及编程过程介绍
  4. 春节相亲大数据告诉你:这种男女最受欢迎!
  5. PPP中的pap和chap认证
  6. 计算机水平毕业研究生7分落户,研究生毕业如何进行上海积分落户?
  7. 余弦相似度 高维数据_从勾股定理到余弦相似度-程序员的数学基础
  8. 千兆以太网TCP协议的FPGA实现。
  9. 【历史上的今天】4 月 30 日:信息论之父出生;万维网对所有人免费开放;图灵奖算法先驱诞生
  10. RabbitMQ实战 - Confirm机制