zoukankan      html  css  js  c++  java
  • 两个线程分别打印 1- 100,A 打印偶数, B打印奇数

    package com.demo.thread;
    
    public class PrintNumber {
        private static Object lock = new Object();
        private static int i = 1;
        private static int wait = 1;
        private static final int TOTAL = 100;
    
        public static void main(String[] args) {
            Thread thread1 = new Thread() {
                public void run() {
                    while (i <= TOTAL) {
                        synchronized (lock) {
                            if (i % 2 == 1) {
                                System.out.println("thread1 " + i++);
                            } else {
                                lock.notify();
                                try {
                                    lock.wait(wait);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }
            };
    
            Thread thread2 = new Thread() {
                public void run() {
                    while (i <= TOTAL) {
                        synchronized (lock) {
                            if (i % 2 == 0) {
                                System.out.println("thread2 " + i++);
                            } else {
                                lock.notify();
                                try {
                                    lock.wait(wait);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }
            };
            thread1.start();
            thread2.start();
        }
    }
    
    package com.demo.thread;
    
    public class PrintNum {
        public static void main(String[] args) {
            for (int i = 1; i <= 100; ++i) {
                PrintOddThread printOddThread = new PrintOddThread(i);
                PrintEvenThread printEvenThread = new PrintEvenThread(i);
                Thread thread1 = new Thread(printOddThread);
                Thread thread2 = new Thread(printEvenThread);
                thread1.start();
                thread2.start();
            }
        }
    }
    
    class PrintOddThread implements Runnable {
        private int i;
    
        public PrintOddThread(int i) {
            this.i = i;
        }
    
        public void run() {
            if (i % 2 == 1) {
                System.out.println("thread1 " + i);
            }
        }
    }
    
    class PrintEvenThread implements Runnable {
        private int i;
    
        public PrintEvenThread(int i) {
            this.i = i;
        }
    
        public void run() {
            if (i % 2 == 0) {
                System.out.println("thread2 " + i);
            }
        }
    }
    
  • 相关阅读:
    深究递归和迭代的区别、联系、优缺点及实例对比
    提高Python运行效率的六个窍门
    C++设计模式——单例模式
    使用Python的turtle库实现七段数码管绘制
    Python 死循环和嵌套循环
    Python 随机数 random
    更改 pandas dataframe 中两列的位置
    Pandas中DataFrame修改列名
    MM 算法与 EM算法概述
    机器学习中的训练集、验证集和测试集
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8672635.html
Copyright © 2011-2022 走看看