#创建三个线程交替循环打印“A”、“B”、“C”
package com.xwl;
/**
* 三个线程交替打印abc
* @author Administrator
*
*主要的思想就是,为了控制执行的顺序,必须要先持有prev锁,也就是前一个线程要释放自身对象锁,再去申请自身对象锁,
*两者兼备时打印字母,之后首先调用self.notifyAll()释放自身对象锁,唤醒下一个等待线程,再调用prev.wait()释放prev对象锁,终止当前线程,
*等待循环结束后再次被唤醒。程序运行的主要过程就是A线程最先运行,持有C,A对象锁,后释放A,C锁,唤醒B。线程B等待A锁,再申请B锁,后打印B,
再释放B,A锁,唤醒C,线程C等待B锁,再申请C锁,后打印C,再释放C,B锁,唤醒A……
/
public class ABC {
//静态 类
//线程 实现Runnable
static class ThreadPrinter implements Runnable{
private String name;//打印的内容
private Object prev;//上一个线程持有的锁
private Object self;//自己持有的锁
//构造方法
public ThreadPrinter(String name, Object prev, Object self) {
super();
this.name = name;
this.prev = prev;
this.self = self;
算法_创建三个线程交替循环打印“A”、"B"、“C”
最新推荐文章于 2024-03-29 11:57:06 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)