java 多线程 web_用Java实现多线程Web服务器

张德丰 广东省佛山教育学院计算机系(!"#$$$) 收稿日期:"$$%&$%&"$ ! " 介绍多线程原理,用 ’()( 实现多线程 *+, 服务器的方法。 #$% 线程 ’-.- */0 1223 !"# $#%&’(%)’*+ *, -.&)’/!"0#%1’+2 ’+ % 3#4 5#06#0 7"%+2 8#,#+2 94:)0%;) 24+ 5(5+6 78)+9:7;(:+9 78:< :4+ 5678=75>+ (8? :4+ (55>7=(:7<8 :7&:46+(?78; =<8:6<>>78;C *01 }} 多线程程序是 ’()( 语言的一个很重要的特点。在一个’()( 程序中,我们可以同时并行运行多个相对独立的线程,例如,我们如果创建一个线程来进行数据输入输出,而创建 另一个线程在后台进行其它的数据处理,如果输入输出线程在接收数据时阻塞,而处理数据的线程仍然在运行。多线程程序设计大大提高了程序执行效率和处理能力。 D 1223 &’()*+, *** 是以 E8:+68+: 作为传输媒介的一个应用系统,*** 网上最基本的传输单位是 *+, 网页。*** 的工作基于客户机F服务器计算模型,由 *+, 浏览器(客户机)和*+, 服务器(服务器)构成,两者之间采用超文本传送协议(1223)进行通信。1223 协议是基于 2G3FE3 协议之上的协议,是 *+, 浏览器和 *+, 服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。1223 协议的作用原理包括四个步骤:连接;请求;应答;关闭连接。 " -./+, 下面简单的 ’()( 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。因为所需的资源 & 打印机、磁盘、数据库和显示屏的硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含明显的等待时间。改进此程序的一种方法是使它成为多线程的。 四项不相关的任务: =>(99 AH=>(99 { 9:(:7= 5B,>7= )<7? A(78(I:678; (6;9[]({ 5678:J(J@7>+(); A(875B>(:+J(8<:4>+(); (==+99J?(:(,(9+(); ?6(KJ57=:B6+J<8J9=6++8(); 在本例中,每项任务在开始之前必须等待前一项任务完成,即使所涉及的任务毫不相关也是这样。但是,在现实生活中,我们经常使用多线程模型。可以用两种不同的方法来获得多个控制线程:多个进程: 在大多数操作系统中都可以创建多个进程。当一个程序启动时,它可以为即将开始的每项任务创建一个进程,并允许它们同时运行。当一个程序因等待网络访问或用户输入而被阻塞时,另一个程序还可以运行,这样就增加了资源利用率。但是,按照这种方式创建每个进程要付出一定的代价:设置一个进程要占用相当一部分处理器时间和内存资源,而且,大多数操作系统不允许进程访问其他进程的内存空间。因此,进程间的通信很不方便,并且也不会将它自己提供给容易的编程模型。 线程: 线程也称为轻型进程 (L*3)。因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程要廉价得多。这样,因为线程允许协作和数据交换,并且在计算资源方面非常廉价,所以线程比进程更可取。线程需要操作系统的支持,不是所有的机器都提供线程。’()( 编程语言,作为相当新的一种语言,已将线程支持与语言本身合为一体,这样就对线程提供了强健的支持。 % ’()( 01 *+, 234567/89: 我们知道 ’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值