比如有一个数,需要两个线程对其交替操作,代码如下


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两个线程交替执行相关推荐

  1. python两个线程交替执行_python 实现两个线程交替执行

    我就废话不多说,直接看代码吧! import threading import time def a(): while True: lockb.acquire() print('a') locka.r ...

  2. Java两个线程交替打印奇偶数(两种方法对比)

    简介 本文将承接文章<Java多线程wait()和notify()系列方法使用教程>,我们将通过"两个线程交替打印100内的奇偶数",来展示下wait()方法和noti ...

  3. Java案例:两个线程交替执行

    目录 一.准备工作 二.执行任务 任务1.两个线程,一个打印A到Z,一个打印1到26,交替执行

  4. 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...

    方法一:传统的线程方法import org.apache.log4j.Logger;/*** 两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象.<br/>* 锁是上 ...

  5. 使用Java线程并发库实现两个线程交替打印的线程题

    背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题.晚上闲着没事就决定把它实现出来. 题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交 ...

  6. java go多线程:两个线程交替打印 0~100 的奇偶数

    最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...

  7. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  8. java线程交替执行_Java synchronized线程交替运行实现过程详解

    背景 用两个线程交替输出A-Z和1-26,即一个线程输出A-Z,另一个线程输出1-26 而且是交替形式 线程1输出A--线程二输出1 线程1输出B--线程二输出2 线程1输出C--线程二输出3 以此类 ...

  9. java多线程问题,线程交替执行

    两个线程,一个打印1-100的奇数,一个打印1-100的偶数:要求:线程1打印5个之后,线程2开始打印,线程2打印5个之后,线程1再开始打印,以此循环. package threadtest;publ ...

最新文章

  1. 自动生成Mapper文件(基于Mybatis Maven插件)
  2. 【网络安全】如何使用PacketSifter从pcap中筛选出有用的信息
  3. SE16N新改表内容方法!!!
  4. Pixhawk飞控源码目录结构及编译流程分析
  5. Redis常用数据类型和事物以及并发
  6. 获取POM.XML依赖的JAR包
  7. Educational Codeforces Round 25 G. Tree Queries
  8. Raphael的set使用
  9. directxsdk 下载地址
  10. Cocoa是什么???
  11. 隐私计算头条周刊(7.31-8.6)
  12. 平均的计算机符号,如何在Word中输入平均数的符号X上加一横(X拔)
  13. excel解决日期数据无法正常筛选
  14. iPhone X适配之启动图适配教程
  15. vue component组件内部自己引用自己
  16. TCP吞吐量的理论计算公式
  17. r语言 林元震_林木多地点半同胞子代测定遗传分析 R语言程序包及其应用
  18. C++ 二维vector排序(sort用法)
  19. 计算机集成技术||PT 软件介绍
  20. MICCAI 2022:基于 MLP 的快速医学图像分割网络—UNeXt

热门文章

  1. Linux 交换空间优化(swap 优化)(积极使用交换空间占比,可能会使程序运行缓慢!)
  2. python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)
  3. python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
  4. Intel Realsense D435运行报错 RuntimeError: Camera not connected! dev.hardware_reset()函数需加睡眠sleep()
  5. Intel Realsense D435报错 RuntimeError: MFCreateDeviceSource(_device_attrs, _source) returned: HResult
  6. 插入排序、选择排序、快速排序以及归并排序(附Python代码)
  7. Java 基础学习(Markdown语法)
  8. linux mysql 5.5 安装_Linux 安装 mysql5.5.19
  9. java 线程 操作系统线程_线程基础:线程(1)——操作系统和线程原理
  10. linux如何挂载windows共享文件,linux如何挂载windows下的共享文件