java两个线程交替执行
比如有一个数,需要两个线程对其交替操作,代码如下
public class ThreadDemo {public static void main(String[] args) {Message message = new Message();Runnable adder = new Adder(message);Runnable suber = new Suber(message);Thread thread1 = new Thread(adder, "adder");Thread thread2 = new Thread(suber, "suber");thread1.start();thread2.start();}
}class Adder implements Runnable {private Message msg;public Adder(Message message){this.msg=message;}@Overridepublic void run() {for(int i = 0 ; i < 5;i++){msg.add();}}
}class Suber implements Runnable {private Message msg;public Suber(Message message){this.msg=message;}@Overridepublic void run() {for(int i = 0 ; i < 5 ;i++){msg.sub();}}
}class Message{private int num;private boolean flag;public Message() {this.num =0;this.flag = true;//flag ==true 加 flag ==false 减}public synchronized void add() {if(!flag){try {super.wait();} catch (InterruptedException e) {e.printStackTrace();}}num++;System.out.println(Thread.currentThread().getName()+",num:"+num);flag = false;this.notifyAll();}public synchronized void sub(){if(flag){try {super.wait();} catch (InterruptedException e) {e.printStackTrace();}}num--;System.out.println(Thread.currentThread().getName()+",num:"+num);flag = true;this.notifyAll();}
}
执行结果
java两个线程交替执行相关推荐
- python两个线程交替执行_python 实现两个线程交替执行
我就废话不多说,直接看代码吧! import threading import time def a(): while True: lockb.acquire() print('a') locka.r ...
- Java两个线程交替打印奇偶数(两种方法对比)
简介 本文将承接文章<Java多线程wait()和notify()系列方法使用教程>,我们将通过"两个线程交替打印100内的奇偶数",来展示下wait()方法和noti ...
- Java案例:两个线程交替执行
目录 一.准备工作 二.执行任务 任务1.两个线程,一个打印A到Z,一个打印1到26,交替执行
- 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...
方法一:传统的线程方法import org.apache.log4j.Logger;/*** 两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象.<br/>* 锁是上 ...
- 使用Java线程并发库实现两个线程交替打印的线程题
背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题.晚上闲着没事就决定把它实现出来. 题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交 ...
- java go多线程:两个线程交替打印 0~100 的奇偶数
最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...
- Java常见的面试算法题:实现两个线程交替打印1到100的数
Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...
- java线程交替执行_Java synchronized线程交替运行实现过程详解
背景 用两个线程交替输出A-Z和1-26,即一个线程输出A-Z,另一个线程输出1-26 而且是交替形式 线程1输出A--线程二输出1 线程1输出B--线程二输出2 线程1输出C--线程二输出3 以此类 ...
- java多线程问题,线程交替执行
两个线程,一个打印1-100的奇数,一个打印1-100的偶数:要求:线程1打印5个之后,线程2开始打印,线程2打印5个之后,线程1再开始打印,以此循环. package threadtest;publ ...
最新文章
- 自动生成Mapper文件(基于Mybatis Maven插件)
- 【网络安全】如何使用PacketSifter从pcap中筛选出有用的信息
- SE16N新改表内容方法!!!
- Pixhawk飞控源码目录结构及编译流程分析
- Redis常用数据类型和事物以及并发
- 获取POM.XML依赖的JAR包
- Educational Codeforces Round 25 G. Tree Queries
- Raphael的set使用
- directxsdk 下载地址
- Cocoa是什么???
- 隐私计算头条周刊(7.31-8.6)
- 平均的计算机符号,如何在Word中输入平均数的符号X上加一横(X拔)
- excel解决日期数据无法正常筛选
- iPhone X适配之启动图适配教程
- vue component组件内部自己引用自己
- TCP吞吐量的理论计算公式
- r语言 林元震_林木多地点半同胞子代测定遗传分析 R语言程序包及其应用
- C++ 二维vector排序(sort用法)
- 计算机集成技术||PT 软件介绍
- MICCAI 2022:基于 MLP 的快速医学图像分割网络—UNeXt
热门文章
- Linux 交换空间优化(swap 优化)(积极使用交换空间占比,可能会使程序运行缓慢!)
- python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)
- python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
- Intel Realsense D435运行报错 RuntimeError: Camera not connected! dev.hardware_reset()函数需加睡眠sleep()
- Intel Realsense D435报错 RuntimeError: MFCreateDeviceSource(_device_attrs, _source) returned: HResult
- 插入排序、选择排序、快速排序以及归并排序(附Python代码)
- Java 基础学习(Markdown语法)
- linux mysql 5.5 安装_Linux 安装 mysql5.5.19
- java 线程 操作系统线程_线程基础:线程(1)——操作系统和线程原理
- linux如何挂载windows共享文件,linux如何挂载windows下的共享文件