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);
            }
        }
    }
    
  • 相关阅读:
    on、where、having的区别和关系
    Java知识点补缺
    Hive部署到IDEA报错 Hive Schema version 2.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt 解决方案
    Hive知识点总结
    区分同步与异步、阻塞与非阻塞
    Hive查询分区元数据,PARTITIONED BY
    单例模式总结
    Sql语句执行顺序
    收藏大数据相关面试题比较好的链接
    实习技能
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8672635.html
Copyright © 2011-2022 走看看