服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

j2se综合--java 5.0 多线程编程实践

java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的api多线程编程在java 5中更加容易,灵活。本文通过一

个网络服务器模型,来实践java5的多线程编程,该模型中使用了java5中的线程池,阻塞队列,可重入锁等,还实践了callable, future等接

口,并使用了java 5的另外一个新特性泛型。 

  简介 

  本文将实现一个网络服务器模型,一旦有客户端连接到该服务器,则启动一个新线程为该连接服务,服务内容为往客户端输送一些字符信

息。一个典型的网络服务器模型如下: 

  1. 建立监听端口。 

  2. 发现有新连接,接受连接,启动线程,执行服务线程。 3. 服务完毕,关闭线程。 

  这个模型在大部分情况下运行良好,但是需要频繁的处理用户请求而每次请求需要的服务又是简短的时候,系统会将大量的时间花费在线

程的创建销毁。java 5的线程池克服了这些缺点。通过对重用线程来执行多个任务,避免了频繁线程的创建与销毁开销,使得服务器的性能方

面得到很大提高。因此,本文的网络服务器模型将如下: 

  1. 建立监听端口,创建线程池。 

  2. 发现有新连接,使用线程池来执行服务任务。 

  3. 服务完毕,释放线程到线程池。 

  下面详细介绍如何使用java 5的concurrent包提供的api来实现该服务器。 

  初始化 

  初始化包括创建线程池以及初始化监听端口。创建线程池可以通过调用java.util.concurrent.executors类里的静态方法

newchahedthreadpool或是newfixedthreadpool来创建,也可以通过新建一个java.util.concurrent.threadpoolexecutor实例来执行任务。这

里我们采用newfixedthreadpool方法来建立线程池。 

  executorservice pool = executors.newfixedthreadpoo

扫描关注微信公众号