设为首页收藏本站language 语言切换
查看: 1257|回复: 0
收起左侧

Java基础:多线程技术在J2ME中的应用总结

[复制链接]
发表于 2010-2-20 14:54:51 | 显示全部楼层 |阅读模式
<p >我们知道,在操作系统级别上软件的运行一般都是以进程为单位,而在每个进程的运行过程中允许同时并发执行多个不同线程,这就使得一个程序能同时执行不同的操作。使用多线程的目的是为了最大限度地利用计算机CPU资源。JAVA程序字节码最终是在JVM虚拟机下运行的,同一虚拟机进程中的不同操作都是通过多线程来运行的。在JAVA虚拟机中,线程常用有单线程和多线程,单线程指程序执行过程只是一个有效操作的序列,不同操作都有着明确的先后顺序;而多线程允许同时进行着不同的操作,这些不同的操作同时并发进行着,并由CPU时钟频率根据不同的调度方式对他们进行执行调度。<p ><p >在JAVA语言中提供了丰富的多线程操纵接口,提供了各类不同的线程实现方法供我们选择,功能非常强大。在手机软件设计中,由于同样需要执行网络连接(基于HTTP的高级Internet协议通讯)、UI调度等待、UI显示幻化、游戏控制等操作需要通过后台的数据运算或UI不断更新等操作。因此在J2ME中,KVM虚拟机也提供了功能强大的多线程API,使我们同样能在J2ME中实现线程的并发运算。<p ><p >在J2ME中,主要有以下三种方法实现多线程。<p ><p >一、继承Thread类(java.lang.Thread)<p ><p >通过编写线程类继承Thread类并重写Thread类中的run()方法实现线程,当线程对象被运行时候将会自动执行run方法中的实体内容,从而开辟一个单独的线程并运行起来。<p ><p >如:<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>public class ThreadSimple extends Thread{ public ThreadSimple() { //constructor } public void run() { //run code entity } }</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >线程实例使用,直接创建对象并调用start()方法即可运行线程。<p ><p >new ThreadSimple()。start();当执行start方法时候,将会自动运行run方法,但是执行start方法时候只做了一件事,就是将线程转化为可执行状态,然后等待操作系统进行调度并运行,因此无法保证线程能立即启动。在JAVA中,Thread类实现了Runnable接口,因此run方法是通过实现接口Runnable中的抽象方法。<p ><p >二、直接实现Runnable多线程接口(java.lang.Runnable)<p ><p >线程接口Runnable中只有一个抽象方法run,通过实现Runnable接口中的方法的类即可创建出有多线程特征的对象,但该对象并无法使其启动线程,需要作为参数并借助Thread的构造方法构造创建对象并调用start方法对线程进行启动。<p ><p >如:<p ><p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>public class RunnablSimple implements Runnable{ public RunnableSimple() { //constructor } public void run(){ //run code entity } }</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >实现类型的对象使用:<p ><p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>RunnableSimple rs = new RunnableSimple(); new Thread(rs).start();</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >由此可见,以上两种方法都是通过Thread的start来启动线程的,实际上所有的线程操作都是封装在Thread这个类中,由Thread对象调用各种接口来控制线程。<p ><p >J2ME中线程中主要方法:void setPriority(int newPriority),设置线程优先级,在操作系统中线程的调度是不确定性的,可以通过该方法设置相应线程的优先级别。<p ><p >static void sleep(long millis) ,线程中静态方法,用于让线程进入休眠状态,执行该方法将会让线程在指定时间millis毫秒内休眠。<p ><p >void start(),使现在进入可执行状态。<p >void run() ,线程执行主体。<p >void join(),等待该线程终止。<p >boolean isAlive(),用于判断线程是否出于Alive状态。<p >static void yield() ,尽量让其他线程先执行。                                 <p align="center"><font color="FF0000" >1</font>2<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 22:03 , Processed in 0.103479 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表