欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【JavaSE】多线程Part2(12)

程序员文章站 2022-03-27 19:49:13
引言健身平台期来的有点早~知识点总结...

引言

  • 健身平台期来的有点早~
  • 一个全民*,盲目服从的社会是最可怕的

知识点总结

【JavaSE】多线程Part2(12)

线程的状态

线程的生命周期中有五种运行状态

  • New
  • Runnable
  • Blocked
  • Terminated
  • Waited
    (老师的图,自己画的太丑了·~~)
    【JavaSE】多线程Part2(12)

线程通信

多个线程处理同一资源,但是进行的任务却不相同。
下面以早餐买包子为例介绍:

本例包含四个类
1.资源类
   Baozi.java
2.包子铺
   Merchat.java
3.顾客
   Foodie.java
4.测试类
   TestMain.java

资源类(包子)

public class BaoZi {
       String pi;
       //包子皮
       String xian;
       //包子馅
      boolean state=false;
      //包子是否做好
}

包子铺

包子铺的任务
  1.先判断包子还有没有,有的话就等待,等顾客吃完;
  2.包子没有了,就开始做,做好之后给顾客吃;
public class Merchat extends Thread{
    private BaoZi bz;
    //以包子作为锁的对象,能够避免线程安全问题
    public Merchat(BaoZi bz){
        this.bz=bz;
    }
       public void run()  {
            int count=0;
           while(true){
               synchronized (bz){
               //保证锁的参数对象为同一个
                   if(bz.state==true){
                       try {
                           bz.wait();
                       } catch (InterruptedException e) {
                           e.printStackTrace();
                       }
                   }

                 if(count%2==0){
                     bz.xian="