使用wait,notify实现

public class Test {public synchronized void a() {for (int i = 1; i <= 52; i++) {System.out.print(i);if (i % 2 == 0) {notify();try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}}public synchronized void b() {for (char i = 'A'; i <= 'Z'; i++) {System.out.print(i);notify();try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {Test test = new Test();new Thread(test::a).start();new Thread(test::b).start();}
}

使用condition实现

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class T {Lock lock = new ReentrantLock();Condition aa = lock.newCondition();Condition bb = lock.newCondition();public void a() {lock.lock();try {for (int i = 1; i <= 52; i++) {System.out.print(i);if (i % 2 == 0) {bb.signalAll();try {aa.await();} catch (InterruptedException e) {e.printStackTrace();}}}} finally {lock.unlock();}}public void b() {lock.lock();try {for (char i = 'A'; i <= 'Z'; i++) {System.out.print(i);aa.signalAll();try {bb.await();} catch (InterruptedException e) {e.printStackTrace();}}} finally {lock.unlock();}}public static void main(String[] args) {T t = new T();new Thread(t::a).start();new Thread(t::b).start();}
}

转载于:https://www.cnblogs.com/wilwei/p/11309648.html

两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z...相关推荐

  1. 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z

    通过这个例题学到了很多,记录下来便于以后常看,<线程通信> /** 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z.打印 顺序为12A34B56C--5152Z>*/ p ...

  2. java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替

    2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z.打印顺序为12A34B56C-.5152Z.即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印 ...

  3. 写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B...5152Z;

    写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B-5152Z: 第一种方式: class Print{private int flag = 1;private in ...

  4. 写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z

    分析: 其中一个线程负责打印数字,另一个线程负责打印字母,但有一个特点就是数字刚好是字母的2倍(字母26,数字52),数字一次打印2个,字母打印一个,并且字母打印线程一定是在数字打印线程之后才打印的. ...

  5. 多线程:Java两个线程,一个打印A-Z,另一个打印1-26,输出结果:A1 B2 C3 ...... Z26

    最近看到一个题,很有意思,就是在Java里实现两个线程,一个线程打印字母,也就是 ABCD - Z,另一个线程打印数字,也就是 1234 - 26.但是这两个线程需要交替打印:第一次字母线程先打印A, ...

  6. 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来

    题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...

  7. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。

    写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...

  8. 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

    1.Windows #include <stdio.h> #include <process.h> #include <windows.h>// 线程个数 cons ...

  9. 设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱,另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足。写出程序(考虑并发问题)。

    设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱, 另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足. 写出程序(考虑并发问题). import java.u ...

最新文章

  1. WP7 开发(二) 通过Geometries来绘制形状
  2. cdn贝免费套餐_阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有...
  3. 成功解决ValueError: Shape of passed values is (33, 1), indices imply (33, 2)
  4. Confirm的用法!
  5. hdu 4324 Triangle LOVE
  6. php 数据库编码,php怎么设置数据库编码方式
  7. 设计师喜欢收集各种各样的笔刷来喽,不必倾家倾产就能像创造出令人惊叹的设计。
  8. windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况
  9. [转]PowerDesigner使用技巧
  10. 整理农行面试软开最常问到的题---------操作系统
  11. 微波雷达感应模块,人体存在感应雷达技术,广告屏智能感应显示
  12. 【Alpha版本】冲刺阶段——Day 1
  13. [经验]iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
  14. python实现一个简单的广域网内的GUI聊天室
  15. java i18n utf_Java国际化(i18n)字符串与Unicode转换
  16. 大梦谁先觉 --伍立杨
  17. eclipse的32位和64位版本(亲测有效)
  18. Java分别采用继承、多态、抽象类、接口实现猫和狗的入门案例
  19. 用数据说话,看Google 怎样被陷害(转自sina)
  20. poi excel 常用操作 [冻结、合并、链接]

热门文章

  1. linux系统下的程序开发报告册,linux系统及应用应用开发实验报告册
  2. 8个适合新手入门的python项目2020_8个适合新手入门的Python项目(2020.6)
  3. python第一周小测验_Python第一周小结
  4. python线性输出_python sklearn-02:线性回归简单例子1
  5. pip安装报错:is not a supported wheel on this platform
  6. md5可以解密吗_Python训练营作业1:加密解密
  7. error C2146: syntax error : missing ';' before identifier 'fd'
  8. CF-558E(E. A Simple Task)
  9. #1415 : 后缀数组三·重复旋律3 (最长公共子串)
  10. 7.使用reserve避免不必要的内存分配