SWT多线程注意事项
要在后臺(tái)線程里對(duì)前臺(tái)界面組件進(jìn)行訪問(wèn)的解決辦法:使用Display對(duì)象,Display對(duì)象主要負(fù)責(zé)管理事件循環(huán)和控制UI線程和其它線程之間的通信。
?
若要訪問(wèn)UI界面上的對(duì)象必須通過(guò)UI線程來(lái)訪問(wèn),就是說(shuō)在非UI線程中調(diào)用UI對(duì)象是不允許的,這是出于線程安全的考慮。
??? Display對(duì)象中負(fù)責(zé)調(diào)用其他線程的方法有以下3種:
1. asyncExec(Runnable runnable):異步啟動(dòng)新的線程。UI線程不會(huì)等待runnable對(duì)象執(zhí)行結(jié)束后再繼續(xù)進(jìn)行,就是說(shuō)UI線程可以和runnable對(duì)象所在的線程同時(shí)運(yùn)行。
2. syncExec(Runnable runnable):同步啟動(dòng)新的線程。UI線程會(huì)等待runnable對(duì)象執(zhí)行結(jié)束后才會(huì)繼續(xù)進(jìn)行。getSyncThread()方法可以獲得線程對(duì)象。當(dāng)runnable對(duì)象是耗時(shí)大的線程時(shí),盡量不要采用此種方式。
3. timerExec(int milliseconds, Runnable runnable):指定一段時(shí)間再啟動(dòng)新的線程。用此方法創(chuàng)建的線程,將會(huì)在指定的時(shí)間后再啟動(dòng)線程。與UI線程是異步的。
Display對(duì)象中,與UI線程相關(guān)的方法如下:
?1. 獲得當(dāng)前的UI線程對(duì)象:getThread()
?2. 使UI線程處于休眠狀態(tài):sleep()
?3. 喚醒UI線程:wake()
轉(zhuǎn)載于:https://www.cnblogs.com/erweiyang/archive/2012/09/17/2688552.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的SWT多线程注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通过udp及vlc传递视频流
- 下一篇: 2012 依赖注入框架