zoukankan      html  css  js  c++  java
  • 线程练习--主线程执行10次,非主线程执行5次

    public class Test {
    
        public static void main(String[] args){
            
            MeThread me = new MeThread();
            Thread t = new Thread(me);
            t.start();
    
            boolean flag = true;
            int i = 1;
            synchronized (me) {
                
                while (flag) {
                    System.out.println(Thread.currentThread().getName()+i);
                    i++;
                    if (i % 10 == 0) {
                        try {
                            me.notify();//Thread.currentThread().notifyAll();
                            i = 0;
                            me.wait();//wait()必须放在notify()后边,先唤醒再自己暂停,不存在先暂停,再唤醒
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }finally {
                            System.out.println("===========");
                        }
                    }
                }
            }
        }
    }
    
    class MeThread implements Runnable {
        @Override
        public synchronized void run() {
            int i = 0;
            
            boolean flag = true;
            while (flag) {
                System.out.println(Thread.currentThread().getName() + i);
                i++;
                if (i % 5 == 0) {
                    try {
                        this.notify();//Thread.currentThread().notifyAll();
                        i = 0;
                        this.wait();
                    } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                    }finally {
                        System.out.println("===========");
                        
                    }
                }
            }
        }
    }

    执行结果

    main0
    main1
    main2
    main3
    main4
    main5
    main6
    main7
    main8
    main9
    ===========
    Thread-00
    Thread-01
    Thread-02
    Thread-03
    Thread-04
    ===========
    main0
    main1
    main2
    main3
    main4
    main5
    main6
    main7
    main8
    main9
    ===========
    Thread-00
    Thread-01
    Thread-02
    Thread-03
    Thread-04
    ===========

  • 相关阅读:
    根据用户输入的工资计算所得税
    ATM取款机数据库设计
    ExecuteNonQuery()
    ExecuteReader()获得数据
    ExecuteScalar ()
    面试题汇总(三)
    面试题汇总(一)
    2019-8最新面试题汇总
    linux下vim 选择文本,删除,复制,粘贴
    TCP和UDP的优缺点及区别
  • 原文地址:https://www.cnblogs.com/a-s-m/p/10752495.html
Copyright © 2011-2022 走看看