您的位置:首页 > 其它

J2ME中,实现多线程的方法

2010-05-26 16:19 239 查看
在J2ME中,主要有以下三种方法实现多线程。

  一、继承Thread类(java.lang.Thread)

  通过编写线程类继承Thread类并重写Thread类中的run()方法实现线程,当线程对象被运行时候将会自动执行run方法中的实体内容,从而开辟一个单独的线程并运行起来。

如:

public class ThreadSimple extends Thread {
public ThreadSimple() {
// constructor
}

public void run() {
// run code entity
}
}


线程实例使用,直接创建对象并调用start()方法即可运行线程。

  new ThreadSimple().start();当执行start方法时候,将会自动运行run方法,但是执行start方法时候只做了一件事,就是将线程转化为可执行状态,然后等待操作系统进行调度并运行,因此无法保证线程能立即启动。在JAVA中,Thread类实现了Runnable接口,因此run方法是通过实现接口Runnable中的抽象方法。

  二、直接实现Runnable多线程接口(java.lang.Runnable)

  线程接口Runnable中只有一个抽象方法run,通过实现Runnable接口中的方法的类即可创建出有多线程特征的对象,但该对象并无法使其启动线程,需要作为参数并借助Thread的构造方法构造创建对象并调用start方法对线程进行启动。

  如:

public class RunnablSimple implements Runnable{
public RunnableSimple() {
//constructor
}
public void run(){
//run code entity
}
}


实现类型的对象使用:

  RunnableSimple rs = new RunnableSimple();

      new Thread(rs).start();

  由此可见,以上两种方法都是通过Thread的start来启动线程的,实际上所有的线程操作都是封装在Thread这个类中,由Thread对象调用各种接口来控制线程。

  J2ME中线程中主要方法:void setPriority(int newPriority),设置线程优先级,在操作系统中线程的调度是不确定性的,可以通过该方法设置相应线程的优先级别。

  static void sleep(long millis) ,线程中静态方法,用于让线程进入休眠状态,执行该方法将会让线程在指定时间millis毫秒内休眠。

  void start(),使现在进入可执行状态。

  void run() ,线程执行主体。

  void join(),等待该线程终止。

  boolean isAlive(),用于判断线程是否出于Alive状态。

  static void yield() ,尽量让其他线程先执行。

  三、使用任务组合实现多线程

  在J2ME中,同样具有JAVA中的任务处理组合类,他们分别为Timer和TimerTask,可以使用他们实现多线程,简单说就是定时实现任务。

  Timer是JAVA中的一个定时器,可以实现在某一时间做某件事或者在某一时间段做某些事,分别通过方法

schedule(TimerTask tt,long millis)和

schedule(TimerTask tt,long start,long off)。

  TimerTask是一个任务类,通过继承该类并覆盖方法run即可创建一个任务。

  如:

public class TimerTaskS extends TimerTask{
public TimerTaskS(){
//constructor
}
public void run(){
//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软件中我们通过手机按键来触发一系列相应的操作,在程序响应处理过程中较多会涉及网络操作、数据存储等相对消耗时间和资源的操作,而这些操作往往需要一定的时间才能完成,因此在处理按键响应过程中通常我们需要建立线程处理,避免程序出现死机现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息