首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>Java 线程/内存模型的缺陷和增强

Java 线程/内存模型的缺陷和增强

2004-02-18 15:11作者:wjmmml出处:论坛责任编辑:方舟

  使用Executor还有一个好处,就是实现线程的“轻量级”使用。前面章节曾提到,即使我们实现了Runnable接口,要真正的创建线程,还是得通过new Thread()来完成,在这种情况下,Runnable对象(任务)和Thread对象(线程)是1对1的关系。如果任务多而简单,完全可以给每条线程配备一个任务队列,让Runnable对象(任务)和Executor对象变成n:1的关系。使用了Executor,我们可以把上面两种线程策略都封装到具体的Executor实现中,方便代码的实现和维护。

  具体的实现有: PooledExecutor,ThreadedExecutor,QueuedExecutor,FJTaskRunnerGroup等
类关系图如下:


图6 Concurrent包Executor/ThreadFactory接口部分类关系图

  下面给出一段代码,使用PooledExecutor实现一个简单的多线程服务器

  代码5

package org.javaresearch.j2seimproved.thread;
import java.net.*;
import EDU.oswego.cs.dl.util.concurrent.*;
public class TestExecutor
{
 public static void main(String[] args)
 {
  PooledExecutor pool = new PooledExecutor(new BoundedBuffer(10), 20);
  pool.createThreads(4);
  try
  {
   ServerSocket socket = new ServerSocket(9999);
   for (; ; )
   {
    final Socket connection = socket.accept();
    pool.execute(new Runnable()
    {
     public void run()
     {
      new Handler().process(connection);
     }
    });
   }
  }
  catch (Exception e) {}
  // die
 }
 static class Handler { void process(Socket s){ } }
}
共5页。 9 7 1 2 3 4 5

关注此文的读者还看过:

返回开发频道首页

共5页。 上一页12345

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络