欢迎来到天天文库
浏览记录
ID:25341426
大小:51.50 KB
页数:5页
时间:2018-11-19
《j2me中多线程网络连接编程的分析论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、J2ME中多线程网络连接编程的分析论文摘要介绍并分析了J2ME的通用网络连接框架(GCF),并以此为基础,指出了在J2ME网络连接编程中存在的问题,并提出了通过构建多线程的两种解决方法。关键词J2MEGCF多线程网络连接0引言J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称。J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话、可视电话、数字机顶盒和汽车导航系统等等。即J2ME是为消费电子产品和手持设备量身定制的Java专用版本。J2ME的出现使开发跨
2、平台的消费类电子产品的应用软件成为可能。Java语言的与平台无关的特性移植到小型电子设备上,.freeleicroedition.io包中定义的接口。图1显示了GCF的类层次结构。图1GCF的类层次结构在GCF中共定义了七个接口,其中Connection是最基本的连接类型。且同时提供了对数据包和流连接的支持。沿着层次结构向下派生出提供更多功能的接口。例如,StreamConnection接口支持输入流和输出流,ContentConnection接口又扩展了StreamConnection接口以支持对流的内容类型、数据长度和编码格式
3、的确定,HttpConnection接口又扩展了ContentConnection接口以支持对于标准的HTTP请求。如在框架层规定的适用于手机或双向寻呼机的移动信息设备框架MIDP(MobileInformationDeviceProfile)在其MIDP1.0规范只要求设备支持HTTP连接协议,而更新的MIDP2.0规范要求同时支持HTTP和HTTPS,后者提供了对更安全的网络连接的支持。2网络编程中的多线程由于目标设备具有内存小,计算能力弱和电池供电等特点,所以如何使应用程序高效的运行就成为开发中的一个大问题.尤其针对手机等移
4、动信息设备时,无线通讯的特点又对我们的程序提出了更高的要求.从代码优化的角度,在网络编程中引入多线程就显得十分重要.当程序运行的时候,ApplicationManagementSoftand显示部件,调用其事件处理函数完成网络的连接工作,代码框架如下:publicvoidmandAction(mandc,Displayables){if(c==sendmand){requestConnect();//连接方法}elseif(c==backmand){display.setCurrent(mainForm);}else{destro
5、yApp(false);notifyDestroyed();}}//获取一个HTTP的连接privatevoidrequestConnect(){Stringurl=URL.URLStringHttpConnectionhpc=null;try{hpc=(HttpConnection)Connector.open(url);intstatus=hpc.getResponseCode();if(status!=HttpConnection.HTTP_OK)content="联机失败!";elsecontent="已联机!";}cat
6、ch(IOExceptione){System.out.println(content);}try{if(hpc!=null)hpc.close();}catch(IOExceptione2){}}上面的程序工作原理可用图2的工作原理图a来表示。图2工作原理图a分析图2可以得出,如果这样的网络连接程序在手机上运行,那么将可能长时间得不到响应。因为连接工作只有一个主线程,所有的应用都是在这个主线程当中进行的,如果此主线程不返回,那么就不能进行后面的行为,用户也不能进行任何操作。下面改进一下程序,创建一个实现Runnable接口的Co
7、nnectPipe类来创建多线程。代码如下://实现Runnable接口classConnectPipeimplementRunnable{……publicvoidrun(){requestConnect();}}修改mandAction函数:publicvoidmandAction(mandc,Displayables){if(c==sendmand){//创建新线程neand){……}}修改之后程序能够较为顺利的运行,当处理网络连接的时候,启动一个线程后主线程会立刻返回,两个线程并行,不会引发在此地堵塞。其工作原理可用图3的工
8、作原理图b来表示。图3工作原理图b详细分析图3,又发现尽管程序可以正常工作,但是每次用户按下按钮的时候都会有新的线程产生,这样显然不够高效,同时,异步的行为又有可能使两个线程间产生死锁。幸好java中提供了and事件的时候唤醒线程,才让其继续运行。
此文档下载收益归作者所有