Java代码中如何使用多线程交替打印1到10呢?

书欣 Java经验 发布时间:2023-01-21 21:53:24 阅读数:16403 1
下文笔者讲述采用多线程模式交替输出1到10的所有数字,具体的实现方式如下所示
实现思路:
    使用lock.notify()和lock.wait()
	即可停止和唤醒线程
	实现交替输出字符的效果
例:使用多线程交替输出数字
class NumberRunnableImpl implements Runnable {
	private int number = 1;
	private Object lock = new Object();
	@Override
	public void run() {
		while (true) {
			synchronized (lock) {
				// 调用notify()唤醒阻塞的线程
				lock.notify();
				if (number <= 10) {
					String threadName = Thread.currentThread().getName();
					System.out.println(threadName + "打印数字" + number);
					number++;
					try {
						// 调用wait()进入阻塞状态并且释放锁
						lock.wait();
						// 线程唤醒后继续执行以下代码
						threadName = Thread.currentThread().getName();
						System.out.println(threadName + "完成本次打印");
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				} else {
					break;
				}
			}
		}
	}
}

 
package com.java265;

public class Test {
 
	public static void main(String[] args) {
		NumberRunnableImpl numberRunnableImpl = new NumberRunnableImpl();
		
		Thread thread1 = new Thread(numberRunnableImpl);
		thread1.setName("线程1");
 
		Thread thread2 = new Thread(numberRunnableImpl);
		thread2.setName("线程2");
		
		thread1.start();
		thread2.start();
	}
 
}

以上代码原理分析

1、调用wait()进入阻塞状态并且释放锁

2、调用notify()唤醒阻塞的线程

3、线程1打印数字后执行lock.wait()方法线程1进入阻塞状态并释放锁;
   线程2进入run方法后调用notify()唤醒阻塞的线程1,线程1继续执行直至完成;
 当线程2打印数字后执行lock.wait()方法线程2进入阻塞状态并释放锁...依次类推
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202301/16743092535481.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者