亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java如何實現一個方法只能被同一個線程調用一次?

Java如何實現一個方法只能被同一個線程調用一次?

瀟瀟雨雨 2019-02-20 11:09:32
如題。Java 如何實現一個方法只能被同一個線程調用一次 ,同一個線程調用第二次的時候可以拋異常。
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

Thread.getCurrentThread.getId()

查看完整回答
反對 回復 2019-03-01
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

自定義一個 Thread 類
在自定義的 Thread 上添加一個 boolean 成員用于判斷

例子

public class Main
{
public static void main(String[] args)

{
    new MyThread(new Runnable()
    {
            @Override
            public void run()
            {
                test();
                test();
                test();
                test();
            }
    }).start();
    
}

public static void test()
{
    Thread t = Thread.currentThread();
    if ( !(t instanceof MyThread) || ((MyThread)t).isTestInvoked() )
        return ;
    
    System.out.println("Method test invoked !");
}

public static class MyThread extends Thread
{
    public MyThread(Runnable r)
    {
        super(r);
    }

    public MyThread()
    {
        super();
    }

    public boolean isTestInvoked()
    {
        boolean result = methodTestInvoked;
        methodTestInvoked = true;
        return result;
    }

    private boolean methodTestInvoked = false;
}

}

運行結果
Method test invoked !

其他

也可以用 ThreadLocal 解決

查看完整回答
反對 回復 2019-03-01
  • 2 回答
  • 0 關注
  • 825 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號