Java--面包师与消费者1(发送与接收线程)
线程的竞争关系:死锁和饥饿。
而线程的调度由操作系统调度: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(发送与接收线程)相关推荐
- Java中udp/tcp的发送和接收
一.UDP协议发送数据 发送处理过程: 创建发送端Socket对象--DatagramSocket 创建数据并将数据打包到DatagramPacket对象 通过Socket发送 释放相关资源 发送处理 ...
- [Java网络编程基础]TCP发送和接收数据
代码如下: package ClientPack;import java.io.IOException; import java.io.OutputStream; import java.net.In ...
- [Java网络编程基础]UDP发送和接收数据
代码如下: package InetAddressPack;import java.io.IOException; import java.net.*; import java.nio.charset ...
- Java中通过TCP协议发送和接收数据-Socket编程
TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...
- java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具
/** 根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面 */ import java.net.*; import java.awt.*; import java.awt.eve ...
- 如何发送和接收RTP封包的H264,用FFmpeg解码
这篇文章给大家介绍怎么打包H264分片到RTP包,并且实现一个播放程序演示接收RTP包和用FFmpeg解码.为了让大家更了解H264打包成RTP的细节,有必要罗嗦一下向大家介绍一些相关的基础知识,下面 ...
- JAVA ActiveMQ消息发送和接收
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...
- java kafka消息的发送与接收
java kafka消息的发送与接收 消息队列在java EE级开发是很常用到的工具之一,在众多消息队列当中,active mq与kafka相对比较受开发者的喜爱,那么kafka是怎样实现消息的发送与 ...
- Android Java使用JavaMail API发送和接收邮件的代码示例
JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...
最新文章
- rancher使用fluentd-pilot收集日志分享
- 关于运算符operator重载出错解决方法
- java学习:理解abstract
- wxWidgets:多线程概述
- si4438-IAR不能接收和发送的问题
- 停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...
- python 隐含波动率_【BSM模型】用实际市场数据计算隐含波动率并验证波动率微笑...
- 中国内置扬声器市场趋势报告、技术动态创新及市场预测
- linux-LINUX试题
- python装b代码_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”
- Web开发常用代码:背投广告
- 一文搞懂 | Linux 时钟子系统
- 电容器充放电的原理是什么?
- 计算机 无法自检,电脑开机不能自检的五大原因
- SD卡格式化重建分区
- 遇到视频聊天软件 v2.2.35
- 关于算法的学习以及一些总结(二)——数据结构
- (单击)双击直接修改内容的代码
- springboot 配置文件 date-format 失效
- 解决管理问题的基本思维方式
热门文章
- IOT开发的学习-linux#5 gcc编译生成一个c语言实行文件,用sh调用实行
- Dev-C++的使用方法
- 川崎机器人总线通信_川崎机器人TCP/IP通信方法及编程过程介绍
- 春节相亲大数据告诉你:这种男女最受欢迎!
- PPP中的pap和chap认证
- 计算机水平毕业研究生7分落户,研究生毕业如何进行上海积分落户?
- 余弦相似度 高维数据_从勾股定理到余弦相似度-程序员的数学基础
- 千兆以太网TCP协议的FPGA实现。
- 【历史上的今天】4 月 30 日:信息论之父出生;万维网对所有人免费开放;图灵奖算法先驱诞生
- RabbitMQ实战 - Confirm机制