第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

存儲由 Handler 運行的遞歸 Runnable 的運行計數(shù)的最佳方法?

存儲由 Handler 運行的遞歸 Runnable 的運行計數(shù)的最佳方法?

青春有我 2022-03-10 16:13:14
final Handler handler = new Handler();        handler.postDelayed(new Runnable() {            @Override            public void run() {                if (counter <= 200) {                    doThing();                    counter++;                    handler.postDelayed(this, 50);                }            }        }, 0);在上面的代碼中,我有一個運行 Runnable 的處理程序。我的問題是,由于計數(shù)器對象位于 Runnable 內(nèi),因此需要將其聲明為最終對象。處理這個遞增值的最佳方法是什么?目前我只是使用一個計數(shù)器對象,但我覺得它應該更容易:class Counter {        int count;        Counter() {            count = 0;        }        public void addOne() {            count++;        }    }
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

已經(jīng)有您可以使用的類,例如AtomicInteger或類似但略有不同的 LongAdder。

您實例化該類的一個對象,然后您可以簡單地調(diào)用將更改該對象的內(nèi)部值的各種方法。

這些類還提供了所需的線程安全。如果沒有該屬性,您的計數(shù)器就不太可能正確計數(shù)!


查看完整回答
反對 回復 2022-03-10
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

而不是使用postDelayed(),你可以使用sendMessageDelayed()。您可以發(fā)送一個Message指示您要運行該可運行文件的信息,然后使用該arg1字段來存儲當前計數(shù)。


private static final int WHAT_DO_WORK = 1;

final Handler handler = new Handler() {


    @Override

    public void handleMessage(Message msg) {

        if (msg.what == WHAT_DO_WORK) {

            doWork(msg.arg1);

        }

    }

};

private void doWork(int counter) {

    if (counter <= 200) {

        doThing();

        int arg1 = count + 1;

        Message message = Message.obtain(handler, WHAT_DO_WORK, arg1, 0);

        handler.sendMessageDelayed(message, 50);

    }

}


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號