• ABC三个线程,交替打印


          有三个线程,分别为A、B、C线程,需要线程交替打印:ABCABCABC...打印10次。

    首先创建一个一个线程间通讯的类:

    class Opt {
        //下一个执行的编号
        private Integer nextInde;
    
        public Integer getNextInde() {
            return nextInde;
        }
    
        public void setNextInde(Integer nextInde) {
            this.nextInde = nextInde;
        }
    }

    线程类:

    public class ABCThread extends Thread{
        //当前线程编号
        private Integer index;
        //线程通讯对象
        private Opt opt;
        //统计当前线程打印次数
        int num = 0;
        String[] thread = {"A","B","C"};
        public ABCThread(Integer index,Opt opt){
            this.index = index;
            this.opt = opt;
        }
    
        @Override
        public void run() {
            while (true) {
                synchronized (opt) {  //锁通信对象
                    while (opt.getNextInde() != index) { //循环  判断是否是当前线程执行(判断线程编号)
                        try {
                            //不是则等待
                            opt.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.print(thread[index]+" ");
                    num++;
                    //设置下一个执行线程编号
                    opt.setNextInde((index + 1) % 3);
                    //通知其他所有线程
                    opt.notifyAll();
                }
                if(num > 9) break;
            }
        }

    创建线程间通讯类的唯一对象,以及ABC三个线程:

     Opt opt = new Opt();
     opt.setNextInde(0);
     new ABCThread(0,opt).start();
     new ABCThread(1,opt).start();
     new ABCThread(2,opt).start();

  • 相关阅读:
    Tomcat 7 简单定制
    Tomcat 启动卡在 Root WebApplicationContext: initialization completed in
    nacos 1.1.x 集群部署笔记
    ERROR 1044 (42000): Access denied for user 'root'@'localhost'
    logrotate 不生效
    Keepalived + Haproxy + PXC 理论篇
    Percona MongoDB 4 搭建副本集
    装饰器模式
    上拉电阻和下拉电阻
    Arduino基本数据类型
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12552306.html
Copyright © 2020-2023  润新知