两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z...
使用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~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
通过这个例题学到了很多,记录下来便于以后常看,<线程通信> /** 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z.打印 顺序为12A34B56C--5152Z>*/ p ...
- java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替
2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z.打印顺序为12A34B56C-.5152Z.即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印 ...
- 写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B...5152Z;
写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B-5152Z: 第一种方式: class Print{private int flag = 1;private in ...
- 写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z
分析: 其中一个线程负责打印数字,另一个线程负责打印字母,但有一个特点就是数字刚好是字母的2倍(字母26,数字52),数字一次打印2个,字母打印一个,并且字母打印线程一定是在数字打印线程之后才打印的. ...
- 多线程:Java两个线程,一个打印A-Z,另一个打印1-26,输出结果:A1 B2 C3 ...... Z26
最近看到一个题,很有意思,就是在Java里实现两个线程,一个线程打印字母,也就是 ABCD - Z,另一个线程打印数字,也就是 1234 - 26.但是这两个线程需要交替打印:第一次字母线程先打印A, ...
- 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来
题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...
- Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。
写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
1.Windows #include <stdio.h> #include <process.h> #include <windows.h>// 线程个数 cons ...
- 设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱,另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足。写出程序(考虑并发问题)。
设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱, 另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足. 写出程序(考虑并发问题). import java.u ...
最新文章
- WP7 开发(二) 通过Geometries来绘制形状
- cdn贝免费套餐_阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有...
- 成功解决ValueError: Shape of passed values is (33, 1), indices imply (33, 2)
- Confirm的用法!
- hdu 4324 Triangle LOVE
- php 数据库编码,php怎么设置数据库编码方式
- 设计师喜欢收集各种各样的笔刷来喽,不必倾家倾产就能像创造出令人惊叹的设计。
- windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况
- [转]PowerDesigner使用技巧
- 整理农行面试软开最常问到的题---------操作系统
- 微波雷达感应模块,人体存在感应雷达技术,广告屏智能感应显示
- 【Alpha版本】冲刺阶段——Day 1
- [经验]iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
- python实现一个简单的广域网内的GUI聊天室
- java i18n utf_Java国际化(i18n)字符串与Unicode转换
- 大梦谁先觉 --伍立杨
- eclipse的32位和64位版本(亲测有效)
- Java分别采用继承、多态、抽象类、接口实现猫和狗的入门案例
- 用数据说话,看Google 怎样被陷害(转自sina)
- poi excel 常用操作 [冻结、合并、链接]
热门文章
- linux系统下的程序开发报告册,linux系统及应用应用开发实验报告册
- 8个适合新手入门的python项目2020_8个适合新手入门的Python项目(2020.6)
- python第一周小测验_Python第一周小结
- python线性输出_python sklearn-02:线性回归简单例子1
- pip安装报错:is not a supported wheel on this platform
- md5可以解密吗_Python训练营作业1:加密解密
- error C2146: syntax error : missing ';' before identifier 'fd'
- CF-558E(E. A Simple Task)
- #1415 : 后缀数组三·重复旋律3 (最长公共子串)
- 7.使用reserve避免不必要的内存分配