在J2ME中使用Timer和TimerTask来实现多线程_JSP教程
推荐:分割字符串以增强J2ME的String能力从JDK1.4以后,String类中新增了split方法来实现字符串的分割,但是在J2ME中却没有该方法(MIDP2.0中也没有实现),但是在实际使用过程中,有些时候的确要用到这种操作,这里将我以前实
众所周知,Java语言在语言的低层就支持多线程,在Java中可以使用两种方式来实现多线程操作,这两种方式依次是:
1、继承Thread类
2、实现Runnable接口
但是Java语言中还有两个类,可以组合来实现多线程的控制,这两个类就是java.util包中的Timer和TimerTask类。和上面的实现方式相比,使用这种方式来实现多线程,可以很方便的开启多个线程,并且代码的结构比较清晰,但是创建类的数量比较多,系统开销稍微大一些。下面详细进行一下介绍:
Timer类是一个定时器,可以每隔一段固定的时间做一件事情,而且可以很方便的停止这些动作。依次为:
构造对象: Timer timer = new Timer();
对象创建以后,可以使用其中的schedule或者是scheduleAtFixedRate方法起启动一个任务(Task)动作。需要停止时,可以调用Timer对象的cancel方法实现,该方法可以停止该Timer启动的所有任务(Task)。
TimerTask类是一个线程类,所有线程的动作代码都写在该类内部。TimerTask是一个抽象类,在实际使用过程中,一般是继承TimerTask类,然后实现实际的操作,停止TimerTask可以使用TimerTask对象里面的cancel方法。
下面是一个实现简单的数字变化的J2ME代码:
package import java.util.*; import javax.microedition.lcdui.*; /** * 使用Timer和TimerTask实现多线程 * 该代码实现的功能是屏幕上的数字一直增加,按下5键暂停,再次按下5键继续增加 */ public class NumberCanvas extends Canvas { /**定时器*/ Timer timer; /**屏幕上显示的数字*/ private int number = 0; /**屏幕宽度*/ private int width; /**屏幕高度*/ private int height; public NumberCanvas() { //获得屏幕的高度和宽度 width = this.getWidth(); height = this.getHeight(); //启动线程 start(); } /** * 启动线程 */ private void start(){ if(timer == null){ //启动定时器 timer = new Timer(); timer.schedule(new NumberTimerTask(),0,300); } } /** * 停止线程 */ private void stop(){ if(timer != null){ //停止线程 timer.cancel(); timer = null; } } /** * 按键处理 * @param keyCode int 按下的键值 */ public void keyPressed(int keyCode){ //判断按下的数字键5 if(keyCode == Canvas.KEY_NUM5){ //判断当前的状态 if(timer == null){ start(); }else{ stop(); } } } protected void paint(Graphics g) { //清屏 g.setColor(0xffffff); g.fillRect(0,0,width,height); g.setColor(0x000000); g.drawString(String.valueOf(number),50,50,Graphics.TOP | Graphics.LEFT); } /** * 线程任务动作 */ public class NumberTimerTask extends TimerTask{ public void run(){ //数字增加 number ; //重绘 repaint(); } } } |
分享:使用Java编写Palm OS程序的解决方案1使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接口都给出了一个到当前的Palm OS应用
- jsp response.sendRedirect不跳转的原因分析及解决
- JSP指令元素(page指令/include指令/taglib指令)复习整理
- JSP脚本元素和注释复习总结示例
- JSP FusionCharts Free显示图表 具体实现
- 网页模板:关于jsp页面使用jstl的异常分析
- JSP页面中文传递参数使用escape编码
- 基于jsp:included的使用与jsp:param乱码的解决方法
- Java Web项目中连接Access数据库的配置方法
- JDBC连接Access数据库的几种方式介绍
- 网站图片路径的问题:绝对路径/虚拟路径
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- jsp下显示中文文件名及绝对路径下的图片解决方法
- 相关链接:
- 教程说明:
JSP教程-在J2ME中使用Timer和TimerTask来实现多线程。