j2me中实现多线程技术总结

上传人:第*** 文档编号:34621504 上传时间:2018-02-26 格式:DOC 页数:4 大小:36.50KB
返回 下载 相关 举报
j2me中实现多线程技术总结_第1页
第1页 / 共4页
j2me中实现多线程技术总结_第2页
第2页 / 共4页
j2me中实现多线程技术总结_第3页
第3页 / 共4页
j2me中实现多线程技术总结_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《j2me中实现多线程技术总结》由会员分享,可在线阅读,更多相关《j2me中实现多线程技术总结(4页珍藏版)》请在金锄头文库上搜索。

1、J2ME 中实现多线程技术总结我们知道,在操作系统级别上软件的运行一般都是以进程为单位,而在每个进程的运行过程中允许同时并发执行多个不同线程,这就使得一个程序能同时执行不同的操作。使用多线程的目的是为了最大限度地利用计算机 CPU 资源。JAVA 程序字节码最终是在 JVM 虚拟机下运行的,同一虚拟机进程中的不同操作都是通过多线程来运行的。在 JAVA 虚拟机中,线程常用有单线程和多线程,单线程指程序执行过程只是一个有效操作的序列,不同操作都有着明确的先后顺序;而多线程允许同时进行着不同的操作,这些不同的操作同时并发进行着,并由 CPU 时钟频率根据不同的调度方式对他们进行执行调度。 在 JA

2、VA 语言中提供了丰富的多线程操纵接口,提供了各类不同的线程实现方法供我们选择,功能非常强大。在手机软件设计中,由于同样需要执行网络连接(基于 HTTP 的高级Internet 协议通讯) 、UI 调度等待、UI 显示幻化、游戏控制等操作需要通过后台的数据运算或UI 不断更新等操作。因此在 J2ME 中,KVM 虚拟机也提供了功能强大的多线程 API,使我们同样能在 J2ME 中实现线程的并发运算。在 J2ME 中,主要有以下三种方法实现多线程。一、继承 Thread 类(java.lang.Thread)通过编写线程类继承 Thread 类并重写 Thread 类中的 run()方法实现线程

3、,当线程对象被运行时候将会自动执行 run 方法中的实体内容,从而开辟一个单独的线程并运行起来。如:public class ThreadSimple extends Threadpublic ThreadSimple()/constructorpublic void run()/run code entity 线程实例使用,直接创建对象并调用 start()方法即可运行线程。new ThreadSimple() 。start() ;当执行 start 方法时候,将会自动运行 run 方法,但是执行start 方法时候只做了一件事,就是将线程转化为可执行状态,然后等待操作系统进行调度并运行,因

4、此无法保证线程能立即启动。在 JAVA 中,Thread 类实现了 Runnable 接口,因此 run 方法是通过实现接口 Runnable 中的抽象方法。二、直接实现 Runnable 多线程接口(java.lang.Runnable) 线程接口 Runnable 中只有一个抽象方法 run,通过实现 Runnable 接口中的方法的类即可创建出有多线程特征的对象,但该对象并无法使其启动线程,需要作为参数并借助 Thread 的构造方法构造创建对象并调用 start 方法对线程进行启动。如:public class RunnablSimple implements Runnablepubl

5、ic RunnableSimple()/constructorpublic void run()/run code entity 实现类型的对象使用:RunnableSimple rs = new RunnableSimple() ;new Thread(rs).start() ;由此可见,以上两种方法都是通过 Thread 的 start 来启动线程的,实际上所有的线程操作都是封装在 Thread 这个类中,由 Thread 对象调用各种接口来控制线程。J2ME 中线程中主要方法:void setPriority(int newPriority) ,设置线程优先级,在操作系统中线程的调度是不

6、确定性的,可以通过该方法设置相应线程的优先级别。static void sleep(long millis) ,线程中静态方法,用于让线程进入休眠状态,执行该方法将会让线程在指定时间 millis 毫秒内休眠。void start() ,使现在进入可执行状态。void run() ,线程执行主体。void join() ,等待该线程终止。boolean isAlive() ,用于判断线程是否出于 Alive 状态。static void yield() ,尽量让其他线程先执行。三、使用任务组合实现多线程在 J2ME 中,同样具有 JAVA 中的任务处理组合类,他们分别为 Timer 和 Tim

7、erTask,可以使用他们实现多线程,简单说就是定时实现任务。 Timer 是 JAVA 中的一个定时器,可以实现在某一时间做某件事或者在某一时间段做某些事,分别通过方法 schedule(TimerTask tt,long millis)和 schedule(TimerTask tt,long start,long off) 。TimerTask 是一个任务类,通过继承该类并覆盖方法 run 即可创建一个任务。如:public class TimerTaskS extends TimerTaskpublic TimerTaskS()/constructorpublic void run()/

8、run code entity 任务调用:Timer timer = new Timer() ;/3 秒钟后执行任务timer.schedule(new TimerTaskS() ,3000) ;/3 秒钟后执行任务并且之后每 5 秒钟执行一次timer.schedule(new TimerTaskS() ,3000,5000) ;有此可见在使用计时任务可以达到实现线程的效果,分别执行不同的并发操作,通过Timer 类对象来操作 TimerTask 对象,通过 schedule 方法来计时执行任务,在结束任务的时候,通常使用 cancel()来实现。通常情况下,在 J2ME 软件中我们通过手机

9、按键来触发一系列相应的操作,在程序响应处理过程中较多会涉及网络操作、数据存储等相对消耗时间和资源的操作,而这些操作往往需要一定的时间才能完成,因此在处理按键响应过程中通常我们需要建立线程处理,避免程序出现死机现象。public void commandAction(Command c, Displayable s) if(c=do1Com)/创建实现接口线程new Thread(new RunnableSimple().start();else if(c=do2Com)/创建继承 Thread 线程new ThreadSimple().start();else/创建任务线程new Timer().schedule(new TimerTaskS(),3000,20);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号