成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述Swing組件與外部線程

開發(fā) 后端
本文介紹Swing組件與外部線程,包括介紹會調(diào)用處理事件的listener和重繪畫面paint或者update等。

Swing組件與外部線程介紹,先總結(jié)下最常見的一個說法;Swing是單線程的。

我的理解就是,一旦Swing組件被實現(xiàn)(setVisiable(true)/show()/pack()或者父組件已經(jīng)被實現(xiàn)),所有改變組件狀態(tài)的代碼或者依賴于組件狀態(tài)的程序代碼,全部需要給EDT執(zhí)行。在這之前可以由多少個線程調(diào)都無所謂。所有的Swing組件都認為只有EDT才會調(diào)用它們,為此組件的方法都是不做同步處理的。為什么這么做呢。在我的另一篇blog 中有提到worker thread模式,當只有一個worker thread時候,可省略掉共享互斥的開銷,極大的提高性能,這就是Event-dispatching thread的實質(zhì)。它的具體作用大概歸納下。

1.會調(diào)用處理事件的listener
比如單擊一個button的時候,ActionEvent實例被放入到EventQueue中。EDT從EventQueue中獲取到這個事件,就會調(diào)用用來處理這個事件的listener中的actionPerformed方法。而這時候EDT是不知道 actionPerformed到底會做什么事情的,它僅僅是單純的去執(zhí)行它而已。追溯上去,可以明白給一個Component注冊的Listener, 其實就是對Component設(shè)置當某個事件發(fā)生的時候,EDT所調(diào)用的方法所在的實例。

2.重繪畫面paint或者update
當我們想重繪畫面的時候,會去調(diào)用repaint.其實調(diào)用repaint并不是馬上去畫,而是記錄下要繪制的區(qū)域,具體的繪制還是由EDT操刀完成。revalidate也是類似。因此在組件被實現(xiàn)后,repaint,revalidate還有一大堆的 addXXXListener,removeXXXListener等都可被其他線程效用。


再總結(jié)下兩個非常重要的方法invokeAndWait和invokeLater,它們傳入?yún)?shù)都是Runnable對象。
invokeAndWait會等待Runnable執(zhí)行完畢才返回。也就是,外部線程調(diào)用這個方法后,就會處于阻塞狀態(tài),如果EventQueue還有其他的事件,需要它們?nèi)勘粓?zhí)行完成,這時候輪到EDT來執(zhí)行Runnable對象,等它也執(zhí)行完了,調(diào)用invokeAndWait的外部線程才會繼續(xù)活動。

invokeLater就耿直多了,直接把Runnable塞到EventQueue中就完事了,至于什么時候執(zhí)行,看EDT有空沒有咯。

【編輯推薦】

  1. SwingUtilities提供兩個方法
  2. 淺談Swing中的渲染器接口
  3. Swing組件中的渲染器Renderer
  4. 淺析Swing線程中的LookupEvent
  5. Swing任務(wù)在Swing線程中執(zhí)行
責任編輯:佚名 來源: 千家綜合布線網(wǎng)
相關(guān)推薦

2009-07-17 12:54:13

2009-07-14 18:05:28

輕量級Swing組件

2009-07-16 17:09:02

Swing應(yīng)用程序

2009-07-16 16:46:39

Swing窗體

2009-07-10 17:43:10

Swing.table

2009-07-14 15:34:22

Swing中的線程GUI程序

2009-07-14 09:09:08

Swing模型過濾器

2009-07-17 16:32:34

Timer對象Swing

2022-05-26 08:31:41

線程Java線程與進程

2009-07-16 08:53:03

Swing任務(wù)Swing線程

2009-07-15 13:06:38

Swing組件

2009-07-15 16:18:08

JSci.swing包

2009-07-10 18:06:59

JTree Swing

2009-07-15 10:14:14

JApplet和JFrSwing

2009-07-14 15:39:34

Swing大多數(shù)控件

2009-08-07 17:19:50

C#調(diào)用外部進程

2009-07-15 18:06:38

Swing線程

2009-07-15 16:03:26

Swing線程

2009-07-15 11:02:32

Swing組件

2009-07-10 12:30:12

Swing組件
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩成人在线观看 | 国外激情av | 国产午夜精品一区二区三区嫩草 | 天天操操| 午夜不卡一区二区 | 久久1区| 视频一区 亚洲 | 亚洲一区二区三区 | 久久精品视频网站 | 91欧美| 国产三级日本三级 | 日本成人综合 | 亚洲人成在线播放 | 成人精品 | 日韩高清一区 | 久久中文字幕在线 | 国产aaaaav久久久一区二区 | 日韩欧美在线一区 | 国产精品网址 | 国产天天操 | 日韩超碰在线 | 一区二区三区回区在观看免费视频 | 久久99网 | 亚洲福利av | 日韩精品一区二区三区在线观看 | 国产精品视频网 | 日本一区二区在线视频 | 亚洲精品一区二区三区在线 | 久久91av| 欧美一级大黄 | 国产欧美一级二级三级在线视频 | 亚洲国产精品成人无久久精品 | 手机在线一区二区三区 | 精品一区久久 | 欧美视频三区 | 国产小网站| 国产欧美一级二级三级在线视频 | 日日夜夜狠狠操 | 亚洲国产欧美在线 | 国产在线精品一区二区 | 精品国产欧美一区二区三区不卡 |