我的评论

请问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  
看了这个帖子,觉得chrome很恐怖。。。
居心叵测的chrome:
http://www.cnblogs.com/nsnail/archive/2008/09/09/1287461.html
re: 浏览器之争 nemo 2008-09-09 19:17  
@gfh
有同感。同标准靠拢是个趋势。但是又不能仅仅靠拢标准。每个浏览器还需要有自己的特色,才能在竞争中占据优势。IE8也向标准迈出了极其重要的一步,希望在未来令开发者们头疼的问题能够慢慢解决吧。
re: 我的书终于出了 nemo 2008-08-23 00:11  
哈哈,多谢捧场。好啊,有空来找我,给你签名:)
re: IE 8 Shining Features nemo 2008-07-22 22:20  
@很暴力
用过,但是只用过最基本的功能,没有进行过调试。文章中已修改。多谢提醒:)
@Jacky-Q
多谢提醒,已改正。
@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.
呵呵,放在这就是希望它有点用处。不过很惭愧,这是我第一次作业,写的还算比较认真,以后的就不值一看了。
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等的语言编译器必须明确他们开发的目标代码使用的是什么存储方式。如果有必要,可以使用转换器可以用来转换存储顺序。
偶现在也开始用link方式了:)
对不起大家啊,这段时间一直没有来得及管理博客。在忙毕设。现在可以歇一歇了。
如果要在上下文菜单里添加多极菜单的话,需要加入菜单分隔线,否则系统就会警告。
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方法之后不会显示出来.
如果加载的数据过多,可新开一线程。
其实原理都差不多,但是我用link方式总有问题,这是一个保险的解决方法。反正对我来说是强多了:)
现在应该好了:)
呵呵,一时疏忽,见笑了!
我这里没有用别的方法,只调用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()获知当前选择的树对象)构造不同的响应方法(用判断语句)。
关于第一种方法,上面给出的那个链接中有比较详细的说明,可以参考。
比较忙,有不明白的地方请包涵。也可以再提出来。有空时我会回复的。
对不起,最近实在太忙了,忙着做开题报告。
最早也要到两周后了。
有一些相关的例子你可以先看一下,虽是英语的,可还是很容易读懂。一直没写下去的一部分原因也是看到这篇文章,觉得不太有必要写了。
http://www.eclipse.org/articles/Article-action-contribution/Contributing%20Actions%20to%20the%20Eclipse%20Workbench.html

posts - 21, comments - 74, trackbacks - 0, articles - 3

Copyright © nemo