引言

经典多线程编程面试题

使用两个线程交替输出A1B2C3......Z26

实现方案1

   public static void method2() throws InterruptedException {

        Object object = new Object();
AtomicInteger atomicInteger = new AtomicInteger(0); new Thread(() -> {
int i = 0;
while (i < 26) {
synchronized (object) {
if (atomicInteger.get() % 2 == 0) {
atomicInteger.incrementAndGet();
System.out.print((char) (i++ + 'A'));
} else {
Thread.yield();
}
}
}
}).start(); new Thread(() -> {
int i = 0;
while (i < 26) {
synchronized (object) {
if (atomicInteger.get() % 2 != 0) {
atomicInteger.incrementAndGet();
System.out.print(++i);
} else {
Thread.yield();
}
}
}
}).start(); }

实现方案2

存在一定问题,有可能输出 1A2B3C

 public void method1() {
Object object = new Object();
Thread t1 = new Thread(() -> {
synchronized (object) {
for (int i = 1; i <= 26; i++) {
System.out.print(String.valueOf((char) ('A' + i - 1)));
object.notify();
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread t2 = new Thread(() -> {
synchronized (object) {
for (int i = 1; i <= 26; i++) {
System.out.print(i);
object.notify();
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t1.start();
t2.start();
}

若存在问题,欢迎大家指出

2个线程交替输出A1B2C3......Z26的更多相关文章

  1. java面试题:多线程交替输出偶数和奇数

    一个面试题:实现两个线程A,B交替输出偶数和奇数 问题:创建两个线程A和B,让他们交替打印0到100的所有整数,其中A线程打印偶数,B线程打印奇数 这个问题配合java的多线程,很多种实现方式 在具体 ...

  2. java中使用ReentrantLock锁中的Condition实现三个线程之间通信,交替输出信息

    本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 [按照 线程1(main)-->线程2-->线程3] ...

  3. java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义

    package com.swift; import java.util.Arrays; import java.util.Comparator; public class ArrayThread_Te ...

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

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

  5. Java并发 两个线程交替执行和死锁

    今天看到一个题:两个线程交替打印奇数和偶数,即一个线程打印奇数,另一个打印偶数,交替打印从1到100.想了下有多重实现方法. wait和notify方法: public class OddEven { ...

  6. Java中多个线程交替循环执行

    有些时候面试官经常会问,两个线程怎么交替执行呀,如果是三个线程,又怎么交替执行呀,这种问题一般人还真不一定能回答上来.多线程这块如果理解的不好,学起来是很吃力的,更别说面试了.下面我们就来剖析一下怎么 ...

  7. Java多线程--线程交替

    要求:借助同步机制,sleep()方法,join()方法,实现动画显示:甲线程:1.3.5.7.9乙线程:2.4.6.8.10丙线程:a.b.c.d.emain()线程输出:线程开始,线程结束 输出结 ...

  8. 使用Java 多线程编程 让三个线程轮流输出ABC,循环10次后结束

    简要分析: 要求三个线程轮流输出,这里我们要使用一个对象锁,让关键部分的代码放入同步块当中.同时要有一个变量记录打印的次数到达10次循环后不再打印,另外一个就是要给每个线程一个标志号,我们根据标识号来 ...

  9. 多线程爬虫Java调用wget下载文件,独立线程读取输出缓冲区

    写了个抓取appstore的,要抓取大量的app,本来是用httpclient,但是效果不理想,于是直接调用wget下载,但是由于标准输出.错误输出的原因会导致卡住,另外wget也会莫名的卡住. 所以 ...

  10. 使用Java实现三个线程交替打印0-74

    使用Java实现三个线程交替打印0-74 题目分析 三个线程交替打印,即3个线程是按顺序执行的.一个线程执行完之后,唤醒下一个线程,然后阻塞,等待被该线程的上一个线程唤醒.执行的顺序是一个环装的队列 ...

随机推荐

  1. 数据的“敏捷制造”,DataWorks一站式数据开发治理范式演进

    简介: 企业大数据技术发展至今,历经了两次蜕变.第一次蜕变从最初的"小作坊"解决大数据问题,到后来企业用各类大数据技术搭建起属于自己的"大平台",通过平台化的能 ...

  2. 数据智能构建管理平台Dataphin V2.9.4.3版本发布

    简介: Dataphin发布V2.9.4.3版本升级多项产品能力,该版本在产品功能和用户体验上都进行了优化和提升,旨在为用户提供更完善的产品能力和体验,以加速企业数据中台建设进程. -更多关于数智化转 ...

  3. 函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码

    ​简介: 本文会以惰性加载为例一步步介绍函数式编程中各种概念,所以读者不需要任何函数式编程的基础,只需要对 Java 8 有些许了解即可. ​ 作者 | 悬衡 来源 | 阿里技术公众号 本文会以惰性加 ...

  4. Flink CDC 2.0 正式发布,详解核心改进

    简介: 本文由社区志愿者陈政羽整理,内容来源自阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的<详解 Flink-CDC>.深入讲解了最新 ...

  5. 拒绝双写:巧用Lindorm数据订阅

    ​简介: 本文介绍了双写场景的一致性问题,详细介绍了三种解决方案,并针对DB->Binlog->Kafka方案给出了Lindorm数据订阅的最佳实践 双写问题介绍 双写问题(Dual Wr ...

  6. vue-cli快速搭建项目的几个文件(一)

    ===========app.vue文件============= <template>   <div id="app">       <router ...

  7. RocketMQ 事件驱动:云时代的事件驱动有啥不同?

    前言: 从初代开源消息队列崛起,到 PC 互联网.移动互联网爆发式发展,再到如今 IoT.云计算.云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头. 目前,消息中间件在国内许多行业 ...

  8. C++基础知识复习

    第一部分:基础知识 一.const 1. 作用 修饰变量,表示不可能更改 修饰指针 const int *ptr--pointer to const int const *ptr-- const po ...

  9. Oracle中ALTER TABLE的五种用法(三)

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  10. postgresql 创建索引

    --查询索引 select * from pg_indexes where tablename='tab1'; --创建索引(查询用到哪几列,就对哪几个字段创建索引) CREATE INDEX ind ...