加载中...

[2022.11.9]进程的并发问题

package thread;

//认识并发问题 火车买票

public class testdemo3 implements Runnable {
    private int ecigarette=10;
    @Override
    public void run(){
        while (true){
            if (ecigarette<=0){
                break;
            }
            System.out.println(Thread.currentThread().getName()+"买走了第"+ecigarette--+"根电子烟");
        }


    }
//Class类getName()方法getName()方法在java.lang包中可用。
//getName()方法用于返回类的名称,接口,原始类型,无效类型以及由此Class对象表示的数组类。

//currentThread()方法
//currentThread()方法返回正在被执行的线程的信息。

    public static void main(String[] args) {
        testdemo3 th=new testdemo3();
        new Thread(th,"顶针").start();
        new Thread(th,"尼古丁真").start();
        new Thread(th,"芙蓉王源").start();
    }
}

龟兔赛跑的问题

package thread;

public class BuyCigarette implements Runnable{
   @Override
   //计步器
    public void run(){

       for (int i = 0; i <=100 ; i++) {
           if(Thread.currentThread().getName().equals("芙蓉王源")){
               try {
                   Thread.sleep(200);
               } catch (InterruptedException e) {
                   throw new RuntimeException(e);
               }
           }
        boolean flag=over(i);
           System.out.println(Thread.currentThread().getName()+"跑了"+i+"步");
       }
    }
    //判断是否完成
    static String winner;
  public boolean over(int steps){
    if(winner!=null)
      return true;
    if (steps>=100){
        winner=Thread.currentThread().getName();
        System.out.println(winner+"抽到了电子烟");
        System.exit(1);
    }return false;
  }

    public static void main(String[] args) {
        BuyCigarette th=new BuyCigarette();
        new Thread(th,"芙蓉王源").start();
        new Thread(th,"尼古丁真").start();
    }

}

 

posted @ 2022-11-09 16:26  带带大萝卜  阅读(27)  评论(0)    收藏  举报