• 两个线程分别打印 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);
            }
        }
    }
    
  • 相关阅读:
    (新)Linux 安装、配置 MondoDB
    Docker 简介
    Windows 环境下的mysql安装及端口更换详解
    Jenkins的使用
    .Net Core Web API 上传图片或文件
    (不适用.Net Core)layui+WebApi上传文件、上传图片
    (不适用于.Net Core环境)jquery+WebAPI 上传文件、图片
    Linux .Net Core发布项目及搭建
    Jquery+JavaScript 随笔
    Vue 随笔
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8672635.html
Copyright © 2020-2023  润新知