国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - JavaFX桌面應(yīng)用未響應(yīng)問題解決方案

JavaFX桌面應(yīng)用未響應(yīng)問題解決方案

2020-07-31 15:24HiIT青年 Java教程

這篇文章主要介紹了JavaFX桌面應(yīng)用未響應(yīng)問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

日常使用軟件的過程中,偶爾會(huì)遇到軟件突然卡住,再點(diǎn)擊幾次就變成“未響應(yīng)”的情況。

在JavaFX應(yīng)用中同樣也會(huì)出現(xiàn)這種情況,在開發(fā)過程中應(yīng)該盡量避免這種情況的出現(xiàn)。

1. “未響應(yīng)”重現(xiàn)

應(yīng)用程序出現(xiàn)“未響應(yīng)”這種情況往往是因?yàn)樵赨I線程中處理一些耗時(shí)的業(yè)務(wù),當(dāng)UI線程在處理耗時(shí)的業(yè)務(wù)時(shí),UI就會(huì)卡住。
下面通過一個(gè)示例(獲取Google頁面title信息)來演示一下“未響應(yīng)”這種情況。

這里使用 jsoup 來抓取Google頁面的title信息,需要引入jsoup的maven依賴:

?
1
2
3
4
5
<dependency>
 <groupId>org.jsoup</groupId>
 <artifactId>jsoup</artifactId>
 <version>1.13.1</version>
</dependency>

編譯AppService,實(shí)現(xiàn)抓取Google頁面的title信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class AppService {
  public static final AppService INSTANCE = new AppService();
  private AppService() {
  }
  public String visitGoogle() {
    try {
      Document document = Jsoup.parse(new URL("https://www.google.com"), 10_000);
      return document.head().getElementsByTag("title").get(0).text();
    } catch (Exception e) {
      return e.getMessage();
    }
  }
}

因?yàn)闆]有F墻,這里訪問Google肯定是超時(shí)的,這里設(shè)置了超時(shí)10秒。

接著改造AppUI,當(dāng)點(diǎn)擊Go按鈕的時(shí)候,調(diào)用visitGoogle并將結(jié)果顯示在界面上。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class AppUI implements Initializable {
  public Label text;
  private AppService appService = AppService.INSTANCE;
  private AppModel model = new AppModel();
  @Override
  public void initialize(URL location, ResourceBundle resources) {
    text.textProperty().bindBidirectional(model.textProperty());
    model.setText("Hello JavaFX.");
  }
  public void click(ActionEvent event) {
    model.setText(appService.visitGoogle());
  }
}

運(yùn)行JavaFX應(yīng)用,當(dāng)點(diǎn)擊第一個(gè)Go按鈕之后,再點(diǎn)擊其他按鈕界面就會(huì)卡住,出現(xiàn)“未響應(yīng)”的現(xiàn)象。

JavaFX桌面應(yīng)用未響應(yīng)問題解決方案

2. UI線程、業(yè)務(wù)線程分離

前面有提到,出現(xiàn)“未響應(yīng)”這種情況是因?yàn)樵赨I線程中處理一些耗時(shí)的業(yè)務(wù),當(dāng)UI線程在處理耗時(shí)的業(yè)務(wù)時(shí),UI就會(huì)卡住。
所以如果能將UI線程和業(yè)務(wù)線程分開來,這樣就能解決界面卡住的問題了。

改造一下AppUI,將調(diào)用visitGoogle的代碼放到新線程去執(zhí)行。

?
1
2
3
public void click(ActionEvent event) {
  new Thread(() -> model.setText(appService.visitGoogle())).start();
}

這里直接采用new的方式創(chuàng)建線程,實(shí)際應(yīng)用中最好是使用線程池。

雖然將業(yè)務(wù)代碼放在新線程中處理解決了界面卡住的問題,但是上面的代碼中,通過model.setText()來改變標(biāo)簽(Label)的文字。
實(shí)際上會(huì)發(fā)現(xiàn)程序運(yùn)行后會(huì)出現(xiàn)異常,一旦我們在非UI線程中嘗試改變UI效果,程序就會(huì)拋出下面的異常。

JavaFX桌面應(yīng)用未響應(yīng)問題解決方案

界面卡住的問題雖然解決了,但又出現(xiàn)了新的問題。

3. 在UI線程更新UI

在UI線程處理業(yè)務(wù)會(huì)導(dǎo)致界面卡住,在業(yè)務(wù)線程更新UI會(huì)出現(xiàn)異常,為了能在業(yè)務(wù)線程中更新UI,JavaFX為開發(fā)者提供了一個(gè)Platform類。
只需要在業(yè)務(wù)線程中,將更新UI的代碼放在這個(gè)類的runLater方法中執(zhí)行即可。

下面再次改造AppUI

  1. public void click(ActionEvent event) { 
  2.   new Thread(() -> { 
  3.     String title = appService.visitGoogle(); 
  4.     Platform.runLater(() -> model.setText(title)); 
  5.   }).start(); 
 

這里還是將業(yè)務(wù)代碼放在新線程中執(zhí)行,但是涉及UI更新的代碼model.setText()則放在Platform.runLater()里面執(zhí)行。
這樣,就解決了界面卡住以及非UI線程更新UI出現(xiàn)異常的問題了。

JavaFX桌面應(yīng)用未響應(yīng)問題解決方案

通過改造,雖然請求Google超時(shí)了,但是UI并沒有卡住,同時(shí)界面也得到了更新。

所以特別注意,在開發(fā)過程中應(yīng)該盡量避免:

在UI線程中處理業(yè)務(wù)在業(yè)務(wù)線程中更新UI

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/itqn/p/13388247.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕 在线观看 | 亚洲欧美激情精品一区二区 | 久久国产精品久久久久久电车 | 欧美三级网址 | 亚洲午夜精品片久久www慈禧 | 青青久视频 | 日韩有码在线播放 | 日本不卡免费新一二三区 | 精品免费视频 | 国产亚洲欧美一区 | 99r精品在线| 特黄特色大片在线观看视频网站 | 日韩中文在线 | 国产成人免费高清激情视频 | 亚洲一区二区三 | 成人av片在线观看 | 国产精品久久久久永久免费观看 | 亚洲一区自拍偷拍 | 免费看黄色一级大片 | 欧美一级欧美三级在线观看 | 国产精品久久久久久久岛一牛影视 | a级在线免费视频 | 亚洲黄色片视频 | 蜜桃视频一区 | 一级片欧美 | 成人h动漫精品一区二区樱花 | 欧美激情精品久久久久久黑人 | 国产一区二区三区久久 | 黄色三级网站在线观看 | 成人免费视频视频在线观看 免费 | 欧美另类专区 | 免费观看www7722午夜电影 | 色婷婷精品国产一区二区三区 | 欧美成人综合在线 | 亚洲欧美一区二区三区国产精品 | 精品国产乱码久久久久久闺蜜 | 午夜午夜精品一区二区三区文 | 免费观看毛片 | 欧美视频免费在线 | 成人免费视频在线观看 | 成人午夜性a一级毛片免费看 |