溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 多線程-資源共享

發(fā)布時間:2020-06-15 21:33:13 來源:網(wǎng)絡 閱讀:492 作者: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問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI