多线程打印ABC(继承+进阶)

简介: 多线程打印ABC(继承+进阶)

基础

06e247713970479bb8a106d5af17b14a.png

进阶

dfedf726045d4291a9aa0488b0151c93.png

public class Demo {
    private static Object locker1 = new Object();
    private static Object locker2 = new Object();
    private static Object locker3 = new Object();
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    synchronized (locker1) {
                        locker1.wait();
                    }
                    System.out.print("A");
                    synchronized (locker2) {
                        locker2.notify();
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        Thread t2 = new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    synchronized (locker2) {
                        locker2.wait();
                    }
                    System.out.print("B");
                    synchronized (locker3) {
                        locker3.notify();
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        Thread t3 = new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    synchronized (locker3) {
                        locker3.wait();
                    }
                    System.out.println("C");
                    synchronized (locker1) {
                        locker1.notify();
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        t1.start();
        t2.start();
        t3.start();
        Thread.sleep(1000);
        // 从线程 t1 启动
        synchronized (locker1) {
            locker1.notify();
        }
    }
}



相关文章
|
6天前
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
20 0
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
|
6天前
|
Java
创建线程的三种方式:继承Thread、Runnable 接口、Callable 接口
创建线程的三种方式:继承Thread、Runnable 接口、Callable 接口
|
7月前
|
数据采集 资源调度 安全
【JavaSE专栏77】线程的创建和启动,继承Thread类或实现Runnable接口完成线程创建启动
【JavaSE专栏77】线程的创建和启动,继承Thread类或实现Runnable接口完成线程创建启动
|
9月前
|
Java
多线程的创建的方式一:继承于Thread类
多线程的创建的方式一:继承于Thread类
31 0
|
Java 调度
Java多线程(2)--Thread类继承和Runnable接口创建线程
Java多线程(2)--Thread类继承和Runnable接口创建线程
88 0
Java多线程(2)--Thread类继承和Runnable接口创建线程
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
对一个变量n,初始化为0,我们使用实现Runnable接口的方式创建一个线程来对其进行一次n++操作,看看能得到我们预期的结果吗?
面试官:除了继承Thread类和实现Runnable接口,你知道使用Callable接口的方式来创建线程吗?
多线程详解p3继承Thread类
多线程详解p3继承Thread类
|
安全 Java 调度
Java多线程、使用多线程的优点、线程的创建和使用、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类
Java多线程、使用多线程的优点、线程的创建和使用、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类
Java多线程、使用多线程的优点、线程的创建和使用、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类
JAVA 继承Thread 实现多线程 资源不共享? 请保持清醒 。
JAVA 继承Thread 实现多线程 资源不共享? 请保持清醒 。
191 0
JAVA 继承Thread 实现多线程 资源不共享? 请保持清醒 。
Java 继承Thread实现线程
本文目录 1. 知识点 2. 实现 3. 测试