温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java 多线程-资源共享

发布时间:2020-06-15 21:33:13 来源:网络 阅读:550 作者:wx5d21d5e6e5ab1 栏目:编程语言
  • 单继承具有局限性,推荐使用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();
}
}
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI