多线程-初识并发-例子抢票

复制代码
package Threads;

//实现多个线程,操作同一个实现类

//问题:多个线程同时操作一个资源的情况下,线程不安全了,数据紊乱
public class testRable implements Runnable {
    //票数
   private int ticketNums=100;
   
    public void run(){
    while(true){
        if (ticketNums>=0){ 
            //模拟延时
            try{
                Thread.sleep(200);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        System.out.println(Thread.currentThread().getName()+"拿到了第:"+ticketNums--+"");//先拿到票再减减
    }else{
        
        break;
        
    }         
        }
    }
    public static void main(String []args){
        //创建线程实现类对象
        testRable t1=new testRable();
        //创建线程对象,并启三个线程把实现类对象添加到线程,然后为线程命名
        Thread ead1=new Thread(t1,"线程1"); 
        Thread ead2=new Thread(t1,"线程2"); 
        Thread ead3=new Thread(t1,"线程3"); 
        
        
        //启动线程
        ead1.start();
        ead2.start();
        ead3.start();
        
        
}
    
    
}
复制代码

 

posted @   hollg  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示