1. synchronized实现双线程交替打印

class Print implements Runnable{
static int i=0;
static final int n=100;
@Override
public void run() {
synchronized (this) {
while (i < n) {
System.out.println(i++ + Thread.currentThread().getName());
notify();
try {
Thread.sleep(5);
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
} public class Main {
public static void main(String[] args){
Print p=new Print();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
t1.setName("A====");
t2.setName("B");
t1.start();
t2.start();
}
}

2. 信号量实现三线程交替打印

public static void main(String[] args){
final AtomicInteger i=new AtomicInteger(0);
final int n=10;
final Semaphore x1=new Semaphore(1);
final Semaphore x2=new Semaphore(0);
final Semaphore x3=new Semaphore(0);
new Thread(()->{
while (i.get() < n) {
x1.acquireUninterruptibly();
if(i.get() < n)
System.out.println(i.getAndIncrement()+":A========");
x2.release();
}
}).start();
new Thread(()->{
while (i.get() < n) {
x2.acquireUninterruptibly();
if(i.get() < n)
System.out.println(i.getAndIncrement()+":B====");
x3.release();
}
}).start();
new Thread(()->{
while (i.get() < n) {
x3.acquireUninterruptibly();
if(i.get() < n)
System.out.println(i.getAndIncrement()+":C");
x1.release();
}
}).start();
}

3.ReentrantLock+Condition实现

Java多线程交替打印的更多相关文章

  1. Java多线程循环打印ABC的5种实现方法

    https://blog.csdn.net/weixin_39723337/article/details/80352783 题目:3个线程循环打印ABC,其中A打印3次,B打印2次,C打印1次,循环 ...

  2. JAVA 多线程轮流打印ABC

    采用Thread+Semaphore实现,思路很简单 import java.io.IOException; import java.util.concurrent.Semaphore; public ...

  3. python多线程交替打印abc以及线程池进程池的相关概念

    import threading import sys import time def showa(): while True: lockc.acquire() #获取对方的锁,释放自己的锁 prin ...

  4. java多线程编程题之连续打印abc的几种解法

    一道编程题如下: 实例化三个线程,一个线程打印a,一个打印b,一个打印c,三个线程同时执行,要求打印出6个连着的abc 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6 ...

  5. java多线程编程之连续打印abc的几种解法

    一道编程题如下: 实例化三个线程,一个线程打印a,一个线程打印b,一个线程打印c,三个线程同时执行,要求打印出10个连着的abc. 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程 ...

  6. Java 实现多线程切换等待唤醒交替打印奇偶数

    引言 在日常工作生活中,可能会有用时几个人或是很多人干同一件事,在java编程中,同样也会出现类似的情况,多个线程干同样一个活儿,比如火车站买票系统不能多个人买一到的是同一张票,当某个窗口(线程)在卖 ...

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

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

  8. java实现线程交替打印1-52和A-Z

    题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交替打印,输出结果为12A34B...........5152Z. 3.请用多线程方式实现. 实现思路:通过锁(s ...

  9. 多线程循环打印数组 -- Java笔记

    问题描述: 现有多个长度相同的数组,现要求使用多线程将数组内的数交替打印. 如: int[] ai = {1,2,3,4,5,6,7}; String[] ac = {"A",&q ...

随机推荐

  1. [AcWing 788] 逆序对的数量

    点击查看代码 #include<iostream> using namespace std; typedef long long ll; const int N = 1e5 + 10; i ...

  2. [AcWing 779] 最长公共字符串后缀

    点击查看代码 #include<iostream> using namespace std; const int N = 200; string str[N]; int n ; int m ...

  3. 2022 Java生态系统报告:Java 11超Java 8、Oracle在缩水、Amazon在崛起!

    近日,New Relic发布了最新的2022 Java生态系统报告,这份报告可以帮助我们深入的了解Java体系的最新使用情况,下面就一起来看看2022年,Java发展的怎么样了,还是Java 8 YY ...

  4. 用python实现matlib的 生成高斯模糊核

    最近在做一个关于模糊图片恢复的数学建模,遇到了一个大问题,特记录一下. 在matlib中有  PSF = fspecial('motion', LEN, THETA);  来生成模糊核函数,但在pyt ...

  5. [题解] [AGC022E] Median Replace

    题目大意 有个奇数长度的 \(01\) 串 \(s\) 其中有若干位置是 \(?\). 每次可将 \(3\) 个连续的字符替换成这三个数的中位数. 求有多少方案将 \(?\) 替换成 \(0/1\) ...

  6. 基本命令学习 -(4)链接文件:ln命令

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其 ...

  7. TCP 协议灵魂 12 问,巩固你的网路底层基础!

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 先亮出这篇文章的思维导图 TCP 作为传输层的协议,是一 ...

  8. VMware-workstation 安装步骤

    目录 VMware Workstation简介 软件获取 百度网盘获取 VM激活码: 安装步骤: VMware Workstation简介 VMware Workstation(中文名"威睿 ...

  9. 实用git指令

    实用git指令 clone 操作目的 简要操作说明 详细操作说明 init & add & commit & push 操作目的 简要操作说明 详细操作说明 pull & ...

  10. cpulimit-限制CPU速率

    CPULimit是一个简单的程序,它可以限制指定进程的CPU百分比. 1.安装依赖 root@localhost:~# apt-get -y install git 2.从GitHUB中克隆源码到本地 ...