熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Eclipse的工具開發:異步作業調度[1]

2013-11-23 20:50:26  來源: Java開源技術 
    ——此文章摘自《自己動手寫開發工具基於Eclipse的工具開發》定價 特價 詳細>>http://tracklinktechcn/?m_id=dangdang&a_id=A&l=&l_type= width= height= border= nosave>

    編程的時候經常會遇到一些長時間的操作比如讀取大量文件並進行解析從遠端服務器讀取文件進行復雜的數據庫操作等如果處理不好的話會造成程序好像死掉了一樣令人震驚的是很多程序員對此並不在乎因為他們知道程序為什麼而死掉了並向用戶解釋說程序在做什麼不用擔心只要等就可以了如果站在用戶的角度思考一下就知道這種想法有多麼可怕

    這裡講作者經歷過的事情曾經開發過一個從超大XML文件(大於M)中導入數據並插入到數據庫中的功能由於在導入每一條數據的時候都要把和這條數據有關的數據從數據庫中取出來然後進行一定的處理後再插入到數據庫中所以耗時是非常長的一般都要耗時半個小時以上在做第一個版本的時候沒有考慮進度條當把程序發給用戶的時候用戶用了一會兒就打電話過來那個程序死掉了幫我看看吧!通過向他解釋這是正常的他這才將信將疑地放下電話沒過了分鐘又打電話過來怎麼還是死的你們怎麼做的程序我要投訴你!後來終於導入成功了但是從用戶的反饋來看他們是十分的不滿意後來在給這個程序開發 bug修復補丁的時候順手給程序加上了進度條的功能隨時報告當前的進度幾乎沒有增加工作量誰知發給客戶以後客戶贊揚說這個版本改進比較大呀好多了不錯!現在我都是單擊完【導入】按鈕以後就去做別的事情了時不時地回來看看導入進度!——作者這才深刻的意識到進度條這個在技術人員看起來微不足道的小功能在改善用戶體驗方面有多麼重要的作用

    後來在去客戶現場做支持的時候看到的一幕又感到猛然一驚所做的那個數據導入功能是ERP系統中的一部分這個ERP系統是一次可以打開多個內部窗口的(類似於 Windows中的MDI)用戶可以在一個窗口中錄單切換到另一個窗口中制作報表或者切換到另一個窗口發郵件看到用戶在打開那個數據導入窗口單擊【導入】按鈕後就切換到另外一個窗口進行錄單操作了天呀如果沒有提供那個進度條的功能那麼用戶單擊【導入】按鈕以後整個ERP系統就死掉了用戶就無法進行任何操作也就無法做任何工作難道這半個多小時要他去上網聊QQ翻紙牌嗎?

    在這一點上 Eclipse做的無疑是非常好的當我們新建一個項目的時候如果項目的初始化時間比較長Eclipse就會彈出一個帶滾動條的窗口提示用戶正在初始化對於一些耗時非常長的操作比如從CVS檢出代碼Eclipse會彈出一個帶有【在後台運行】按鈕的進度對話框如圖所示用戶單擊【在後台運行】按鈕以後這個對話框就會關閉這樣用戶就可以在Eclipse中進行其他的操作了避免了長時間等待所造成的時間浪費

http://developcsaicn/Java_Eclipse/images/jpg>
  進度條

    我們最常接觸的就是IProgressMonitor了在很多方法中都要求傳遞此接口的實例比如編輯器的doSave方法就是如下聲明的
    public void doSave(IProgressMonitor monitor)

    通過這個接口就可以操控進度條來顯示我們當前的保存進度了不過IProgressMonitor並不是進度條對話框它要依靠一個進度顯示器來把進度顯示出來比如最常見的進度對話框ProgressMonitorDialog

    部分任務在運行的時候可以由用戶選擇取消當用戶取消任務的時候IProgressMonitor的isCanceled方法會返回true因此我們在任務進行的時候要實時地去調用isCanceled方法當發現任務被取消的時候要盡快結束任務

    我們可以使用Java的標准接口Runnable來實現多線程任務運行不過在Eclipse中又有了新的選擇那就是IRunnableWithProgress其聲明如下

right>[]  [http://developcsaicn/Java_Eclipse/htm>]  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29186.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.