/** * Created by pengyi on 2015/3/30 0030. */ public class Hello implements Runnable { private Integer amount = 50; private String s = "-"; boolean a = true; public void run() { if ("线程一".equals(Thread.currentThread().getName()) || "线程二".equals(Thread.currentThread().getName()) || "线程三".equals(Thread.currentThread().getName()) || "线程四".equals(Thread.currentThread().getName()) || "线程五".equals(Thread.currentThread().getName()) || "线程11".equals(Thread.currentThread().getName()) || "线程12".equals(Thread.currentThread().getName()) || "线程13".equals(Thread.currentThread().getName()) || "线程14".equals(Thread.currentThread().getName()) || "线程15".equals(Thread.currentThread().getName()) || "线程21".equals(Thread.currentThread().getName()) || "线程22".equals(Thread.currentThread().getName()) || "线程23".equals(Thread.currentThread().getName()) || "线程24".equals(Thread.currentThread().getName()) || "线程25".equals(Thread.currentThread().getName()) || "线程31".equals(Thread.currentThread().getName()) || "线程32".equals(Thread.currentThread().getName()) || "线程33".equals(Thread.currentThread().getName()) || "线程34".equals(Thread.currentThread().getName()) || "线程35".equals(Thread.currentThread().getName()) || "线程41".equals(Thread.currentThread().getName()) || "线程42".equals(Thread.currentThread().getName()) || "线程43".equals(Thread.currentThread().getName()) || "线程44".equals(Thread.currentThread().getName()) || "线程45".equals(Thread.currentThread().getName())) { while (0 < amount) { if (a) { a = false; synchronized (this) { amount = (amount - 1); System.out.println(amount + "<---------->" + Thread.currentThread().getName()); } try { Thread.sleep(200); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } else { try { synchronized (this) { super.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } a = true; synchronized (this) { super.notify(); } } }else { while (100 > amount) { if (a) { a = false; synchronized (this) { amount = (amount + 1); System.out.println(amount + "<---------->" + Thread.currentThread().getName()); } try { Thread.sleep(200); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } else { try { synchronized (this) { super.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } a = true; synchronized (this) { super.notify(); } } } } public static void main(String[] args) { Hello he = new Hello(); Thread thread1 = new Thread(he, "线程一"); thread1.start(); Thread thread2 = new Thread(he, "线程二"); thread2.start(); Thread thread3 = new Thread(he, "线程三"); thread3.start(); Thread thread4 = new Thread(he, "线程四"); thread4.start(); Thread thread5 = new Thread(he, "线程五"); thread5.start(); Thread thread6 = new Thread(he, "线程六"); thread6.start(); Thread thread7 = new Thread(he, "线程七"); thread7.start(); Thread thread8 = new Thread(he, "线程八"); thread8.start(); Thread thread9 = new Thread(he, "线程九"); thread9.start(); Thread thread10 = new Thread(he, "线程十"); thread10.start(); Thread thread11 = new Thread(he, "线程11"); thread11.start(); Thread thread12 = new Thread(he, "线程12"); thread12.start(); Thread thread13 = new Thread(he, "线程13"); thread13.start(); Thread thread14 = new Thread(he, "线程14"); thread14.start(); Thread thread15 = new Thread(he, "线程15"); thread15.start(); Thread thread16 = new Thread(he, "线程16"); thread16.start(); Thread thread17 = new Thread(he, "线程17"); thread17.start(); Thread thread18 = new Thread(he, "线程18"); thread18.start(); Thread thread19 = new Thread(he, "线程19"); thread19.start(); Thread thread20 = new Thread(he, "线程20"); thread20.start(); Thread thread21 = new Thread(he, "线程21"); thread21.start(); Thread thread22 = new Thread(he, "线程22"); thread22.start(); Thread thread23 = new Thread(he, "线程23"); thread23.start(); Thread thread24 = new Thread(he, "线程24"); thread24.start(); Thread thread25 = new Thread(he, "线程25"); thread25.start(); Thread thread26 = new Thread(he, "线程26"); thread26.start(); Thread thread27 = new Thread(he, "线程27"); thread27.start(); Thread thread28 = new Thread(he, "线程28"); thread28.start(); Thread thread29 = new Thread(he, "线程29"); thread29.start(); Thread thread30 = new Thread(he, "线程30"); thread30.start(); Thread thread31 = new Thread(he, "线程31"); thread31.start(); Thread thread32 = new Thread(he, "线程32"); thread32.start(); Thread thread33 = new Thread(he, "线程33"); thread33.start(); Thread thread34 = new Thread(he, "线程34"); thread34.start(); Thread thread35 = new Thread(he, "线程35"); thread35.start(); Thread thread36 = new Thread(he, "线程36"); thread36.start(); Thread thread37 = new Thread(he, "线程37"); thread37.start(); Thread thread38 = new Thread(he, "线程38"); thread38.start(); Thread thread39 = new Thread(he, "线程39"); thread39.start(); Thread thread40 = new Thread(he, "线程40"); thread40.start(); Thread thread41 = new Thread(he, "线程41"); thread41.start(); Thread thread42 = new Thread(he, "线程42"); thread42.start(); Thread thread43 = new Thread(he, "线程43"); thread43.start(); Thread thread44 = new Thread(he, "线程44"); thread44.start(); Thread thread45 = new Thread(he, "线程45"); thread45.start(); Thread thread46 = new Thread(he, "线程46"); thread46.start(); Thread thread47 = new Thread(he, "线程47"); thread47.start(); Thread thread48 = new Thread(he, "线程48"); thread48.start(); Thread thread49 = new Thread(he, "线程49"); thread49.start(); Thread thread50 = new Thread(he, "线程50"); thread50.start(); } } //开了50个线程,25个线程是+1,25个是-1,所以理论上是死循环
一个简单的多线程同步例子
最新推荐文章于 2020-05-24 01:09:25 发布