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);
            }
        }
    }
    
  • 相关阅读:
    Burp Suite抓包使用步骤
    抓包工具Burp Suite安装步骤(待补充)
    mysql版本和模式查询
    git仓库下拉和上传
    git仓库个人和企业版新增仓库和成员
    漏洞扫描工具acunetix破解安装步骤
    漏洞扫描工具acunetix12会遇到的问题
    memcached缓存:安装和清缓存
    oracle数据库备份、还原命令及常见问题(待补充)
    Linux中,关闭selinux
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8672635.html
Copyright © 2011-2022 走看看