快速业务通道

Eclipse客户端程序中多线程的使用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
队列中删除,Job 不会再运行了,这时cancel方法会返回true。但是如果Job正在运行,cancel方法调用并不会立即终止Job 的运行,它只会设定一个标志,指明这个Job已经被取消了。我们可以使用Job的run方法传入的参数 IProgressMonitor monitor,这个参数的isCanceled方法会返回Job是否被取消的状态。如果需要,我们 必须在我们的代码的适当位置检查Job是否被取消的标志,作出适当的响应。另外,由于调用Job的cancel 方法不一定立即终止Job,如果我们需要等待被取消的Job运行完再执行,我们可以用如下代码:if (!job.cancel()) job.join();

Join方法的使用。由于join方法会导致一个线程等待另一个线程,一旦等待线程中拥有一个被等待线 程所需要的锁,就会产生死锁。当我们的线程中需要用到同步时,这种死锁的情况非常容易出现,所以我 们使用join时必须非常小心,尽量以其他方法替代。

避免过时的Job造成的错误。由于我们启动的线程并不一定是马上执行的,当我们的Job开始运行时, 情况可能发生了变化。我们在Job的处理代码中要考虑到这些情况。一种典型的情况是,我们在启动一个 对话框或者初始化一个ViewPart时,我们会启动一些 Job去完成一些数据读取的工作,一旦数据读取结束 ,我们会启动新的UI Job更新相应的UI。有时,用户在打开对话框或者View后,马上关闭了该对话框或者 View。这时我们启动的线程并没有被中断,一旦在Job中再去更新UI,就会出错。在我们的代码中必须作 相应的处理。所以,我们在线程中更新界面元素之前,我们必须先检查相应的控件是否已经被dispose了

结束语

在我们进行基于Eclipse的客户端开发时,使用多线程可以大大的提供我们的程序并发处理能力,同时 对于提高用户体验也有很好的帮助。但是,多线程程序也有其不利的一面,我们也不要滥用线程:

首先,多线程程序会大大的提高我们程序的复杂度,使得我们的开发和调试更加困难

其次,过多的线程容易引发死锁、数据同步等并发问题的发生

另外,由于线程创建和销毁需要开销,程序的整体性能可能因为过多线程的使用而下降

所以,我们在使用线程时一定要谨慎。本文对Eclipse线程的讨论,希望能对大家使用线程有所帮助。 由于实际情况较为复杂,文中所提到的方法仅供参考,读者对于不同的实际问题需要进行具体分析,从而 找出最佳的解决方案。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号