Java多线程应用循环输出ABC方式

 更新时间:2025年05月16日 14:08:16   作者:二六八  
这篇文章主要介绍了Java多线程应用循环输出ABC方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java 多线程应用循环输出ABC

有三个线程ID分别是A、B、C,请用多线编程实现,在屏幕上循环打印10次ABCABC

请补充以下代码

public class Test { 
    public static void main(String[] args) { 
        MajusculeABC maj = new MajusculeABC(); 
        Thread t_a = new Thread(new Thread_ABC(maj , 'A')); 
        Thread t_b = new Thread(new Thread_ABC(maj , 'B')); 
        Thread t_c = new Thread(new Thread_ABC(maj , 'C')); 
        t_a.start(); 
        t_b.start(); 
        t_c.start(); 
    } 
} 
class MajusculeABC { 
请补充代码
} 
class Thread_ABC implements Runnable {
请补充代码
}

答案如下

public class ThreadTest {
    public static void main(String[] args) throws InterruptedException {
        MajusculeABC maj = new MajusculeABC();
        Thread t_a = new Thread(new Thread_ABC(maj , 'A'));
        Thread t_b = new Thread(new Thread_ABC(maj , 'B'));
        Thread t_c = new Thread(new Thread_ABC(maj , 'C'));
        t_a.start();
        t_b.start();
        t_c.start();
    }
    private static class MajusculeABC {
        //        请补充代码
        public MajusculeABC() {
        }

        private int a = 1;

        private synchronized void print(int index, char s) throws InterruptedException {
            do {
                if (s == 'A' && a == 1) {
                    a++;
                    System.out.println(index+"---" + s);
                    notifyAll();
                    break;
                } else if (s == 'B' && a == 2) {
                    a++;
                    System.out.println(index+"---" + s);
                    notifyAll();
                    break;
                } else if (s == 'C' && a == 3) {
                    a = 1;
                    System.out.println(index+"---" + s);
                    notifyAll();
                    break;
                } else {
                    wait();
                }

            } while (true);

        }
    }

    private static class Thread_ABC implements Runnable {

        private char s;
        private MajusculeABC majusculeABC;

        //        请补充代码
        public Thread_ABC(MajusculeABC majusculeABC, char s) {
            this.majusculeABC = majusculeABC;
            this.s = s;
        }

        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                try {
                    majusculeABC.print(i, s);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

输出如下:

0---A
0---B
0---C
1---A
1---B
1---C
2---A
2---B
2---C
3---A
3---B
3---C
4---A
4---B
4---C
5---A
5---B
5---C
6---A
6---B
6---C
7---A
7---B
7---C
8---A
8---B
8---C
9---A
9---B
9---C

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java常用的数据脱敏方法(手机、邮箱、身份证号)

    Java常用的数据脱敏方法(手机、邮箱、身份证号)

    这篇文章主要给大家介绍了关于Java常用的数据脱敏(手机、邮箱、身份证号)的相关资料,信息脱敏对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护,需要的朋友可以参考下
    2023-07-07
  • mybatis plus MetaObjectHandler 不生效的解决

    mybatis plus MetaObjectHandler 不生效的解决

    今天使用mybatis-plus自动为更新和插入操作插入更新时间和插入时间,配置了MetaObjectHandler不生效,本文就来解决一下,具有一定的 参考价值,感兴趣的可以了解一下
    2023-10-10
  • Spring Boot基于Active MQ实现整合JMS

    Spring Boot基于Active MQ实现整合JMS

    这篇文章主要介绍了Spring Boot基于Active MQ实现整合JMS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java将网络图片转成输入流以及将url转成InputStream问题

    Java将网络图片转成输入流以及将url转成InputStream问题

    这篇文章主要介绍了Java将网络图片转成输入流以及将url转成InputStream问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Java进阶学习:网络服务器编程

    Java进阶学习:网络服务器编程

    Java进阶学习:网络服务器编程...
    2006-12-12
  • Java中通过反射实现代理Proxy代码实例

    Java中通过反射实现代理Proxy代码实例

    这篇文章主要介绍了Java中通过反射实现代理Proxy代码实例,java实现代理可以通过java.lang.reflect.Proxy接口结合java.lang.reflect.InvocationHandler来实现,需要的朋友可以参考下
    2023-08-08
  • mybatis-plus如何禁用一级缓存的方法

    mybatis-plus如何禁用一级缓存的方法

    这篇文章主要介绍了mybatis-plus如何禁用一级缓存的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Spring注解@Transactional失效的场景分析

    Spring注解@Transactional失效的场景分析

    在使用Spring中事务注解@Transactional时会存在几种场景下该注解失效,即不能按照预期封装成一个事务操作,于是本文文将对该注解进行学习并对相关失效场景进行分析,需要的朋友可以参考下
    2023-07-07
  • Java多线程——之一创建线程的四种方法

    Java多线程——之一创建线程的四种方法

    这篇文章主要介绍了Java创建线程方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • SpringBoot利用EasyExcel实现导出数据

    SpringBoot利用EasyExcel实现导出数据

    EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具,它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能看,本文就将介绍如何利用EasyExcel实现导出数据,需要的朋友可以参考下
    2023-07-07

最新评论