java 多线程-资源共享

  • 单继承具有局限性,推荐使用Runnable接口,启动线程必须借用Thread类对象
    • new Thread(Run,String s).start() ,new Thread()可以传字符串
    • Thread.currentThread().getName();当前线程的名字,即传入的字符串
    • 重写的run()方法没有返回值,且不能抛出异常
    • Thread.sleep(200);暂停该线程200毫秒延迟,1000毫秒约等于一秒

模拟抢票:

public class ThreadDownload implements Runnable {

private int num=99;
public void run()
{
    while(true)
    {
        if(num<0)
        {
            break;
        }
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  //模拟延迟,停止200毫秒
        System.out.println(Thread.currentThread().getName()+"-"+num--);
    }
}

public static void main(String[]args)
{   //一份资源
    ThreadDownload web=new ThreadDownload();
    System.out.println(Thread.currentThread().getName());//在main线程中,打印main
    //多个代理
    new Thread(web,"a").start();
    new Thread(web,"b").start();
    new Thread(web,"c").start();
}
}

模拟龟兔赛跑:

public class ThreadDownload implements Runnable {
private String winner;
public void run()
{

    for(int step=1;step<=100;step++)
    {
        if(Thread.currentThread().getName().equals("兔子")&&step%10==0)
        {
            try {
                Thread.sleep(100);  
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName()+"-->"+step);
        boolean flag=gameOver(step);
        if(flag)
        {
            break;
        }
    }
}
private boolean gameOver(int step)
{
    if(winner!=null)
    {
        return true;
    }else
    {
        if(step==100)
        {
            winner=Thread.currentThread().getName();
            System.out.println("winner=="+winner);
            return true;
        }
    }

    return false;
}
public static void main(String[]args)
{   //一份资源
     ThreadDownload td=new ThreadDownload();
    new Thread(td,"乌龟").start();
    new Thread(td,"兔子").start();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值