Java怎么实现多线程切换等待唤醒交替打印奇偶数

  介绍

这篇文章给大家分享的是有关Java怎么实现多线程切换等待唤醒交替打印奇偶数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>引言

,,,,在日常工作生活中,可能会有用时几个人或是很多人干同一件事,在java编程中,同样也会出现类似的情况,多个线程干同样一个活儿,比如火车站买票系统不能多个人买一到的是同一张票,当某个窗口(线程)在卖某一张票的时候,别的窗口(线程)不允许再卖此张票了,在此过程中涉及到一个锁和资源等待的问题,如何合理正确的让线程与线程在干同一件事的过程中,不会抢资源以及一个一直等待一个一直干活的状况,接下来就聊一下多线程的等待唤醒以及切换的过程,在此就以A和B两个线程交替打印奇偶数的例子为例,代码如下:

package  com.svse.thread;   import  java.util.concurrent.atomic.AtomicInteger;/* *   ,*交替打印奇偶数   *功能说明:   * @author: zsq   ,* create 日期:2019年5月27日,下午4:34:30   ,*修改人,修改时间,修改描述   *   2019年,* Copyright  (c)北京智华天成科技有限公司——版权所有   */public  class  AlternatePrinting  {//让两个线程使用同一把锁。交替执行,。   ,//判断是不是奇数,如果是奇数进入奇数线程执行打印并加一。然后线程释放锁资源,然后让该线程等待   ,//判断是不是偶数,如果是偶数进入偶数线程执行打印并加一。然后线程释放锁资源,然后让该线程等待   ,public  static  AtomicInteger  AtomicInteger =new  AtomicInteger (1);   public  static  void  main (String [], args), {   Thread =new 线程(new  AThread ());   Thread  b=new 线程(new  BThread ());   a.start ();   b.start ();   }//奇数线程   ,public  static  class  AThread  implements  Runnable {   public  void  run (), {   而(真){   synchronized  (atomicInteger), {   如果(atomicInteger.intValue () % 2, !=0) {   System.out.println(“奇数线程:“,+,atomicInteger.intValue ());   try  {   thread . sleep (500);   },catch  (InterruptedException  e1), {//,TODO  Auto-generated  catch 块   e1.printStackTrace ();   }   atomicInteger.getAndIncrement();,//,以原子方式将当前值加,1。   ,//,奇数线程释放锁资源   ,atomicInteger.notify();//执行完操作后释放锁并进入等待   ,try  {   atomicInteger.wait ();   },catch  (InterruptedException  e), {   e.printStackTrace ();   }   其他}{//,奇数线程等待   ,try  {   atomicInteger.wait ();   },catch  (InterruptedException  e), {//,TODO  Auto-generated  catch 块   e.printStackTrace ();   }   }   }   ,}   }   }   ,//偶数线程   ,public  static  class  BThread  implements  Runnable {   public  void  run (), {   而(真){   synchronized  (atomicInteger), {   如果(atomicInteger.intValue () % 2,==0) {   System.out.println(“偶数线程:“+,atomicInteger.intValue ());   try  {   thread . sleep (500);   },catch  (InterruptedException  e1), {//,TODO  Auto-generated  catch 块   e1.printStackTrace ();   }   atomicInteger.getAndIncrement();,//,以原子方式将当前值加,1。   ,//,偶数线程释放锁资源   ,atomicInteger.notify();//执行完操作后释放锁并进入等待   ,try  {   atomicInteger.wait ();   },catch  (InterruptedException  e), {   e.printStackTrace ();   }   其他}{   {try //,偶数线程等待   ,atomicInteger.wait ();   },catch  (InterruptedException  e), {//,TODO  Auto-generated  catch 块   e.printStackTrace ();   }   ,}   ,}   }   ,,}   ,}   }

,效果如下:

癑ava怎么实现多线程切换等待唤醒交替打印奇偶数"

Java的特点有哪些

Java的特点有哪些   1. java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。   2. java具有简单性,面向对象,分布式、安全性,平台独立与可移植性,动态性等特点。   3.使用Java可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序等。

Java怎么实现多线程切换等待唤醒交替打印奇偶数