請問ThreadPoolExecutor是否有查看線程池是否空閑,當前有多少個線程正在工作的接口呢....
我submit一個runnable接口任務,最后怎樣來確認這些在線程池中的任務都完成了呢?
看完了這一篇,很詳細。
有一個問題就是:Worker的數量是如何確定的,由哪個參數確定?
Worker是在什么時候被構造出來的?
這樣做的一個好處是,如果某個讀操作在刪除時已經定位到了舊的鏈表上,那么此操作仍然將能讀到數據,只不過讀取到的是舊數據而已,這在多線程里面是沒有問題的。
在刪除一個元素的時候,應該會加writelock了,為什么還會有讀數據的可能呢?
re: 程序員小史記017[未登錄] Nemo 2008-11-19 08:41
怎么很久不更新了呀
re: 程序員小史記012[未登錄] Nemo 2008-10-12 09:41
馬上要去上海實習了,真是忐忑
re: 程序員小史記007[未登錄] Nemo 2008-09-27 12:12
這一期寫得很好~我也是要畢業了,希望能去大公司
re: 程序員小史記005[未登錄] Nemo 2008-09-21 09:37
大三馬上要畢業了,到現在也沒過4級,掛了很多課。
看了你的文章更是忐忑了許多,大學,真的是還沒開始過,就要結束了。
re: 瀏覽器之爭 nemo 2008-09-10 13:05
re: 瀏覽器之爭 nemo 2008-09-09 19:17
@gfh
有同感。同標準靠攏是個趨勢。但是又不能僅僅靠攏標準。每個瀏覽器還需要有自己的特色,才能在競爭中占據優勢。IE8也向標準邁出了極其重要的一步,希望在未來令開發者們頭疼的問題能夠慢慢解決吧。
re: 我的書終于出了 nemo 2008-08-23 00:11
哈哈,多謝捧場。好啊,有空來找我,給你簽名:)
@很暴力
用過,但是只用過最基本的功能,沒有進行過調試。文章中已修改。多謝提醒:)
@homer
可以直接擴展ResourceNavigator,網上有相關的文章:
http://www.cnblogs.com/Aimd/archive/2006/05/15/400753.html
不知道你有什么樣的需求,如果是基于GEF/EMF做的話,可以考慮使用ProjectExplorer。如果你要保留Eclipse資源所支持的大部分功能,在此基礎上定制一些自己的樹結點,只要擴展org.eclipse.ui.navigator.navigatorContent擴展點,定義一些triggerpoint,并且自己提供navigatorContentProvider, navigatorLableProvider, navigatorActionProvider,就可以達到此目的。
nemo
@homer
這個問題應該是你的GefTest.application沒有被找到。跟ResourceNavigator類關系不大。你可以查看一下你RCP插件(擁有Application類的插件)中的Application類所在的插件工程的plugin.xml中,org.eclipse.core.runtime.application擴展點中察看一下你所指定的Application類對不對,以及Application Id 和你在XXX.product中所指定的Id是否一致(如果擁有產品文件的話)。
如果沒有問題的話,確保你的RCP插件中的插件依賴項和xxx.product中的依賴項一致。
還有可能是依賴項的順序問題...這就比較麻煩了。
不太懂你的意思。你是指想要以編程的方式來獲得文件的絕對路徑么?應該可以吧。resource中有getAbsolutePath()方法吧。。。?
to z:
這個問題可能是因為沒有引用org.eclipse.ui.ide的緣故,或者新版本的org.eclipse.ui.ide已經將ResourceNavigator從該項目包中去掉(這個我不是很了解,最近沒有跟蹤Eclipse3.3版本)。最好能夠提供一些具體的細節。
to dashan:
YOURPlugin是你的插件類,在Eclipse3.1以后使用了OSGi技術,是指插件的Activator類。
現在,隨著激動人心的eclipse3.3的正式發布,令人慶幸的一件事情發生了:eclipse中的IDE被移植到了單獨的包中:
IDE application moved to new plug-in
The portion of the org.eclipse.ui.ide plug-in that defines the application has been moved into a new plug-in: org.eclipse.ui.ide.application. This allows people writing their own RCP application to use existing views or APIs defined by org.eclipse.ui.ide without having a dependency on the application.
呵呵,放在這就是希望它有點用處。不過很慚愧,這是我第一次作業,寫的還算比較認真,以后的就不值一看了。
re: Eclipse的插件第三種安裝方法 nemo 2007-03-06 10:45
Eclipse提供了一種新的方法來針對每個插件進行配置。在PDE的新建插件向導中可以創建“目標定義”項目,創建以.target結尾的文件,PDE對此文件的格式也進行了支持。這樣,就可以在目標中指定和管理多個插件站點,而不需要使用 .link 文件了。
re: 導出Eclipse RCP項目心得 nemo 2007-03-06 10:35
現在對OSGi了解的比較多了,OSGi對Eclipse發現插件、控制插件都非常重要。在Eclipse3.1以后,OSGi bundle代替原來的插件來控制插件的生命周期。MANIFEST.MF文件包含了許多OSGi頭和特定的基于Eclpse平臺的偽代碼。
文中第13行Bundle-Activator即為激活器類。在Eclipse3.2以后,已經將Eclipse創建插件向導自動產生的插件類命名為Activator。這個頭部是必須的,Activicator來控制插件的啟動、運行、結束,缺少了這個頭將會無法創建插件。
第12行:Export-package中的包表示對其他插件可見的包,也是非常有用的選項。其他插件無法import此偽代碼沒有聲明的包。
re: 導出Eclipse RCP項目心得 nemo 2007-03-06 10:26
好久都沒有更新隨筆了。導出Eclipse RCP項目可以使用Ant構建,發現PDE所提供的向導方便是方便,卻老是出錯。
re: 大端還是小端? nemo 2006-11-10 10:36
對。Java等的語言編譯器必須明確他們開發的目標代碼使用的是什么存儲方式。如果有必要,可以使用轉換器可以用來轉換存儲順序。
re: Eclipse的插件第三種安裝方法 nemo 2006-07-15 02:24
偶現在也開始用link方式了:)
對不起大家啊,這段時間一直沒有來得及管理博客。在忙畢設?,F在可以歇一歇了。
如果要在上下文菜單里添加多極菜單的話,需要加入菜單分隔線,否則系統就會警告。
menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
@sol
這兩天我又研究了一下關于刷新不及時的問題,有了一些答案。
建議不要使用refresh(void)方法。refresh(void)方法只有在大規模數據變動的情況下在使用,否則會延緩刷新。
viewer.refresh()會遞歸的更新所有樹節點object,以及label和content,在這個過程中需要與樹結構,標簽提供器以及內容提供器緊密的交互,因而在出現較少數據變更時沒有必要也不應該使用刷新方法。
還有另一個版本的刷新方法,可以用它來指定是否刷新現有元素的標簽。建議使用刷新方法時不要使用viewer.refresh(),而使用viewer.refresh(boolean updateLabels)、viewer.refresh(Object element)、viewer.refresh(Object element,boolean updateLabels)
而update方法之刷新所選目標的label或是圖像,而不管其子節點。如果該節點下新增加了一個子節點,調用update方法之后不會顯示出來.
如果加載的數據過多,可新開一線程。
re: Eclipse的插件第三種安裝方法 nemo 2006-04-06 10:44
其實原理都差不多,但是我用link方式總有問題,這是一個保險的解決方法。反正對我來說是強多了:)
re: Eclipse的插件第三種安裝方法 nemo 2006-04-05 14:52
現在應該好了:)
re: Eclipse的插件第三種安裝方法 nemo 2006-04-05 14:42
呵呵,一時疏忽,見笑了!
我這里沒有用別的方法,只調用viewer.refresh()方法。是不是監聽機制出現了問題?
@想不出問題的我
可以設置nameFilter過濾樹結點的名字。
比如對于文件結點而言,可根據文件的后綴名辨別不同的樹結點,從而針對不同類型的文件設置不同的ContextMenu.
可以通過填寫plugin.xml來進行操作。通過設置filter,典型格式如下:
<extension point="org.eclipse.ui.popupMenus">
<objectContribution id="org.eclipse.ui.articles.action.contribution.popup.object"
objectClass="org.eclipse.core.resources.IFile"
nameFilter="*.java">
<filter
name="projectNature"
value="org.eclipse.jdt.core.javanature">
</filter>
<action id="org.eclipse.ui.articles.action.contribution.object.action1"
label="Object Action 1"
icon="icons/red_dot.gif"
menubarPath="additions"
class="org.eclipse.ui.articles.action.contribution.ObjectAction1Delegate">
</action>
</objectContribution>
</extension>
此處objectClass設為你為你的TreeViewer設置的樹對象類。nameFilter可以精確指定哪一個樹對象(顯示的名字)。
action標簽設置你想要處理的事件操作,必須實現org.eclipse.ui.IObjectActionDelegate接口(讓Eclipse自動完成),只要在其中實現run()方法,寫出自己想要的操作即可。我印象中是這樣的。
另外的方法你可以在createContextMenu中針對不同的TreeObject對象(通過viewer.getTree().getSelection()[0].getText()獲知當前選擇的樹對象)構造不同的響應方法(用判斷語句)。
關于第一種方法,上面給出的那個鏈接中有比較詳細的說明,可以參考。
比較忙,有不明白的地方請包涵。也可以再提出來。有空時我會回復的。