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

这篇博客介绍了如何创建两个线程,一个打印1到52,另一个打印A到Z,按照12A34B...5152Z的顺序。博主分析了线程间的关系,指出数字和字母数量的比例,并提出了使用锁来确保线程同步。通过设置标志变量和计数器,实现了数字和字母交替打印的算法。最后展示了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

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

分析:

两个线程,一个负责打印数字,一个负责打印字母,细心的我发现字母是26个,数字是52个,两者是2倍的关系,而且打印的结果中两个数(可以使十位的)配一个字母,所以可以利用循环进行打印,循环26次即可。

这里我们用两个锁,用锁的目的就是线程各自进行,互不打扰,当到临界条件时,我不能进行,你也不能进行,完成分配。

算法:

  1. 定义两个变量,一个是标识flag,一个是数字符count。flag  = false;
  2. 先进行数字的打印,一个是判断flag的循环,若满足条件我们让他等待,等待字母行打印,怒然他进行数字的打印。
  3. 之后跳转到字母打印行,同样,满足条件先进行数字打印,不然进行字母打印。

字母怎么通过count来转换,因为我们是运用count来实现对整个进程的控制,所以字母也应该受到count的控制,我们利用强制转换类型进行转换。

char a = (char)(count +'A' - 1)

线程循环的执行我们用一下代码实现:

thread s = new thread();
    new Thread(() -> {
        for (int i = 0; i < 26; i++) {
			s.runNum();
			s.runWord();
		}
	}).start();

综合以上,实现代码如下:

class thread {
	private boolean flag = false;
	private int count = 1;
	public synchronized void ru
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值