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

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

再次循環(huán)之前等待循環(huán)內(nèi)的方法完成

再次循環(huán)之前等待循環(huán)內(nèi)的方法完成

婷婷同學(xué)_ 2023-06-28 16:15:42
我正在構(gòu)建一個(gè) java fx 應(yīng)用程序,并在其自己的線程上有一個(gè) while 循環(huán),但該循環(huán)不會等待 Dijkstra 方法返回?cái)?shù)組,我似乎通過使線程休眠 1000 毫秒來暫時(shí)解決了問題,但我不這樣做我真的不知道為什么這是有效的,但是有沒有更好的方法可以讓我等待該方法完成然后開始下一次迭代?    public class Chasers {    public volatile List<List<Integer>>  Path; ///////   volatile int ChaserX;   volatile int ChaserY;   volatile int PlayerX;   volatile int PlayerY;   boolean Continue=true;volatile int  PathSize = 0;int dir = 5;volatile int i=0;Main MainPassed=new Main();DijkstraSolve PathFinder = new DijkstraSolve();  Task<Void> task = new Task<Void>() {        @Override protected Void call() throws Exception {            while (Continue) {                i = 0;                width = MainPassed.width;                ChaserX = ((int) (PlayerIns.chaser.getCenterX() / width) * width);                ChaserY = ((int) (PlayerIns.chaser.getCenterY() / width) * width);                PlayerX = ((int) (PlayerIns.player.getCenterX() / width) * width);                PlayerY = ((int) (PlayerIns.player.getCenterY() / width) * width);                Path = PathFinder.Dijkstra(ChaserX, ChaserY, PlayerX, PlayerY, MainPassed);//wait for this to return??                PathSize = Path.size() - 1;            }            return null;        }    };    Thread th = new Thread(task);    //th.setDaemon(true);    th.start();     public void MoveChaser(Player PlayerIns){    Timeline timeline = new Timeline(new KeyFrame(Duration.millis(50), new EventHandler<ActionEvent>() {        @Override        public void handle(ActionEvent event) {            System.out.println(" current path "+Path);            System.out.println("==============================");        }    }));    timeline.setCycleCount(Timeline.INDEFINITE);    timeline.play();}}
查看完整描述

2 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

您正忙于循環(huán)并可能導(dǎo)致 UI 線程饑餓。您還沒有顯示變量是如何聲明的。(并且您使用的非標(biāo)準(zhǔn)命名約定會導(dǎo)致混亂。請不要用大寫字母命名變量,這樣它們看起來就像類。)

也許 Path 變量(應(yīng)該命名為“path”)沒有聲明為 volatile?


查看完整回答
反對 回復(fù) 2023-06-28
?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以通過使用以下join()方法來實(shí)現(xiàn)此目的,當(dāng)從父線程調(diào)用此方法時(shí),父線程將等待直到子線程終止。th.join()之后使用th.start()。您的任務(wù)應(yīng)該在執(zhí)行這兩個(gè)命令之間運(yùn)行。


查看完整回答
反對 回復(fù) 2023-06-28
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

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