场景应用:用Java写三个线程轮流打印1-100的程序
Posted 杨 戬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了场景应用:用Java写三个线程轮流打印1-100的程序相关的知识,希望对你有一定的参考价值。
文章目录
最近身体不太舒服,只贴代码了,打了点注释,不再解读了,不忙了再来多写几种方法
方法一:一个线程+synchronized关键字
代码如下:
package com.leetcode.www;
class PrintThread extends Thread
// 用于三个线程轮流同步打印的锁对象
private static Object obj =new Object();
// 打印的数字(计数器)
private static int count=1;
// 线程编号
private int tno;
// 线程编号传入
PrintThread( int tno)
this.tno = tno;
@Override
public void run()
while (true)
synchronized (obj)
if (count > 100)
break;
// 用数量取余3是否等于编号的操作 实现线程间切换
if (count % 3 == tno)
System.out.println("线程编号:"+this.tno+"打印:"+count);
count++;
else
try
obj.wait();
catch (InterruptedException e)
e.printStackTrace();
obj.notifyAll();
public class Solution
public static void main(String[] args)
PrintThread t1 =new PrintThread(0);
PrintThread t2 =new PrintThread(1);
PrintThread t3 =new PrintThread(2);
t1.start();
t2.start();
t3.start();
运行结果:
方法二:一个线程+lock锁
把上面的synchronized换成lock
代码不写了,大家有兴趣可以实现评论一起探讨
方法三:三个线程+synchronized
把obj放main里面,然后传入。。。。
不过比较麻烦,一开始想是这么个思路,后来写一半觉得麻烦,还不如合成一个了
代码不写了,大家有兴趣可以实现评论一起探讨
以上是关于场景应用:用Java写三个线程轮流打印1-100的程序的主要内容,如果未能解决你的问题,请参考以下文章