快速业务通道

java制作多个线程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
ize(200, applet.size * 50); applet.init(); applet.start(); aFrame.setVisible(true); } } ///:~ Ticker不仅包括了自己的线程处理机制,也提供了控制与显示线程的工具。可按自己的意愿创建任意数量的线程,毋需明确地创建窗口化组件。在Counter4中,有一个名为s的Ticker对象的数组。为获得最大的灵活性,这个数组的长度是用程序片参数接触Web页而初始化的。下面是网页中长度参数大致的样子,它们嵌于对程序片(applet)的描述内容中:<applet code=Counter4 width=600 height=600><param name=size value="20"></applet>其中,param,name和value是所有Web页都适用的关键字。name是指程序中对参数的一种引用称谓,value可以是任何字串(并不仅仅是解析成一个数字的东西)。我们注意到对数组s长度的判断是在init()内部完成的,它没有作为s的内嵌定义的一部分提供。换言之,不可将下述代码作为类定义的一部分使用(应该位于任何方法的外部):inst size = Integer.parseInt(getParameter("Size"));Ticker[] s = new Ticker[size]可把它编译出来,但会在运行期得到一个空指针违例。但若将getParameter()初始化移入init(),则可正常工作。程序片框架会进行必要的启动工作,以便在进入init()前收集好一些参数。此外,上述代码被同时设置成一个程序片和一个应用(程序)。在它是应用程序的情况下,size参数可从命令行里提取出来(否则就提供一个默认的值)。数组的长度建好以后,就可以创建新的Ticker对象;作为Ticker构建器的一部分,用于每个Ticker的按钮和文本字段就会加入程序片。按下Start按钮后,会在整个Ticker数组里遍历,并为每个Ticker调用start()。记住,start()会进行必要的线程初始化工作,然后为那个线程调用run()。ToggleL监视器只是简单地切换Ticker中的标记,一旦对应线程以后需要修改这个标记,它会作出相应的反应。这个例子的一个好处是它使我们能够方便地创建由单独子任务构成的大型集合,并以监视它们的行为。在这种情况下,我们会发现随着子任务数量的增多,机器显示出来的数字可能会出现更大的分歧,这是由于为线程提供服务的方式造成的。亦可试着体验一下sleep(100)在Ticker.run()中的重要作用。若删除sleep(),那么在按下一个切换按钮前,情况仍然会进展良好。按下按钮以后,那个特定的线程就会出现一个失败的runFlag,而且run()会深深地陷入一个无限循环——很难在多任务处理期间中止退出。因此,程序对用户操作的反应灵敏度会大幅度降低。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号