当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 在本文中,我们将简单观察一下多线程应用程序开发中公共线程用法,同时,解释一下生产者-消费者编程方案,并研究一个实际的示例来向您演示 Consumer 类是如何工作的。
 

 

 ·线程池与工作队列    »显示摘要«
    摘要:为什么要用线程池? 诸如 web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 http、ftp 或 pop)、通过 jms 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的......
 ·线程与swing    »显示摘要«
    摘要:本文包括以下内容:单线程规则:swing线程在同一时刻仅能被一个线程所访问。一般来说,这个线程是事件派发线程(event-dispatching thread)。规则的例外:有些操作保证是线程安全的。事件分发:如果你需要从事件处理(event-handling)或绘制代码以外的地方访问ui,那么你可以使用swingutilities类的invokelater()或invokeandwait()方法......


Java技术:使您轻松地进行多线程应用程序编程
上一页   ...但是,这意味着我们必须确保队列是线程安全的或使用一个不会与消费操作冲突的单线程生产者.无论使用哪种方法,都必须将队列设计成允许不同的进程能访问其方法.

【程序编程相关:思科推出第一款定制的渠道通信工具

【推荐阅读:朗讯阿尔卡特将合并 分析师点评朗讯包袱多

consumer 线程优先级:我们希望能够设置 consumer 线程运行的优先级. 【扩展信息:私登他人家庭Wi-Fi网 美国一男子被罚

consumer 线程命名:线程拥有一个有意义的名称会比较方便,当然这的确有助于调试.例如,如果您向 java 虚拟机发送了一个信号,它将生成一个完整的线程转储 ? 所有线程及其相应堆栈跟踪的快照.要在 windows 平台上生成这个线程转储,您必须在 java 程序运行的窗口中按下键序列 <ctrl><break>,或者单击窗口上的“关闭”按钮.有关如何使用完整的线程转储来诊断 java 软件问题的更多信息,请参阅参考资料.

类代码

在 getthread() 方法中,我们使用“惰性创建”来创建 consumer 的线程,如清单 1 所示:

清单 1. 创建 consumer 的线程

/**

* lazy creation of the consumer´s thread.

*

* @return the consumer´s thread

*/

private thread getthread()

{

if (_thread==null)

{

_thread = new thread()

{

public void run()

{

consumer.this.run();

}

};

}

return _thread;

该线程的 run() 方法运行 consumer 的 run() 方法,它是主消费者循环,如清单 2 所示:

清单 2. run() 方法是主 consumer 循环

/**

* main consumer´s thread method.

*/

private void run()

{

while (!_isterminated)

{

// job handling loop

while (true){object o;

synchronized (_queue)

{

if (_queue.isempty())


...   下一页
 ·java程序中的多线程(1)    »显示摘要«
    摘要:为什么会排队等待? 下面的这个简单的 java 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。此外,因为所需的资源 ? 打印机、磁盘、数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含明显的等待时间。因此,程序在访问数据库之前必须等待打印机完成打印文件的任务,等等。如果您正在等待程序的完成,则这是对计算资源和您的时间的一种拙劣使用......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE