不会吧!不会还不会多个线程创建吧!

不会吧!不会还不会多个线程创建吧!

各位观众老爷 点赞投币一键三联 坏了 搞错了! 关注收藏

^ 根据韩顺平老师做笔记

在这里插入图片描述

继承Thread VS Runnable 区别

1、从java的设计来看 通过继承Thread或者实现Runnable接口创建线程本质上都没有区别 从jdk文档中可以看到Thread类本身就实现的Runnable接口的Start()

2、实现Runnable接口方式更加适合多个线程共享一个资源的情况并且避免了单继承的限制

建议使用Runnable接口的使用

package com.company.duoxiancheng.review;

public class Thread03 {

    public static void main(String[] args) {
        //main线程启动两个子线程、
        T1 t1 = new T1();
        T2 t2 = new T2();
        Thread thread1 = new Thread(t1);
        Thread thread2 = new Thread(t2);
        thread1.start();
        thread2.start();
    }

}
class T1 implements Runnable{

    int count = 0;
    @Override
    public void run() {
        while (true){
            System.out.println("hello,world"+(++count));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (count==5){
                break;
            }
        }


    }
}
class T2 implements Runnable{

    int count = 0;
    @Override
    public void run() {
        while (true){
            System.out.println("hi"+(++count));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (count ==5){
                break;
            }
        }

    }
}
使用多线程模拟三个窗口同时售票
解法一(但是会出现问题)
package com.company.duoxiancheng.review;

public class SellTicket {

    public static void main(String[] args) {
        sellticket1 sellticket11 = new sellticket1();
        sellticket1 sellticket1 = new sellticket1();
        sellticket1 sellticket12=new  sellticket1();
        Thread thread1= new Thread(sellticket1);
        Thread thread2= new Thread(sellticket11);
        Thread thread3= new Thread(sellticket12);
        thread1.start();
        thread2.start();
        thread3.start();
    }
}

class sellticket1 implements Runnable{
    private static int ticketNum = 100;
    @Override
    public void run() {
        while (true){
            if (ticketNum <=0){
               System.out.println("票已销售完毕");
               break;
            }
            //休眠50ms
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("窗口"+Thread.currentThread().getName()+"售出一张票" +(--ticketNum));
        }
    }
}

结果出现问题

在这里插入图片描述

问题原因 判断问题 的时候会休眠 导致

下面文件会解决超卖问题

;
}
}
}


结果出现问题

[外链图片转存中...(img-oEHRnoRX-1627731416854)]

问题原因  判断问题 的时候会休眠 导致

下面文件会解决超卖问题



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值