import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
//J2ME 中的多线程
// 在MIDP 应用设计中,如果遇到了复杂设计或者需要较长时间的操作,都可以
//使用多线程;
/*
比如应用程序连接网络,获取数据可能需要较长时间,
这时可以利用多线程技术允许用户同时进行其他操作,或者设计一个动画屏幕,
提示正在进行连网操作,这是很重要的,
否则用户无从知道应用程序的工作状态。
*
*
*/
//简单的线条动画
public class LineThread extends Canvas implements Runnable,CommandListener {
// 线长度
int lineSize = 1;
//创建一个命令
private Command startCommand = new Command("Start Game",Command.OK,1);
//初始化线程
private Thread thread;
MIDlet midlet;
//构造方法
public LineThread(MIDlet midlet){
this.midlet = midlet;
//为当前的类 , 添加一个命令
addCommand(startCommand);
//添加监听器
setCommandListener(this);
}
public void run() {
// TODO Auto-generated method stub
// 线条增长到顶点停止
while(true){
if(lineSize>getHeight()){
break;
}
lineSize+=10;
try{
//线程暂停
Thread.sleep(130);
//重绘事件
repaint();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
protected void paint(Graphics g) {
// TODO Auto-generated method stub
// g.setColor(255, 255, 255);
// g.fillRect(0, 0, this.getWidth(), this.getHeight());
//线条
g.setColor(0xff0000);
//g.drawLine(this.getWidth()/2, getHeight(), getWidth()/2, this.getHeight()-lineSize);
//画三角形
//g.fillTriangle(0, 0, 0, lineSize, lineSize, 0); //画布遮盖
//三角形向两侧遮盖
// g.fillTriangle(this.getWidth()/2, this.getHeight()/2,getWidth()/2-lineSize,getHeight()/2,getWidth()/2,getHeight()/2-lineSize );
// g.fillTriangle(this.getWidth()/2, this.getHeight()/2,getWidth()/2,getHeight()/2+lineSize,getWidth()/2+lineSize,getHeight()/2);
//网格线
g.drawLine(getWidth()/2, getHeight(), getWidth()/2, 0);
g.drawLine(0, getHeight()/2, getWidth(), getHeight()/2);
g.setStrokeStyle(Graphics.SOLID); //实线
g.setStrokeStyle(Graphics.DOTTED); //虚线
g.drawLine(getWidth()/2-lineSize, getHeight()/2, getWidth()/2, getHeight()/2-lineSize);
g.drawLine(getWidth()/2+lineSize, getHeight()/2, getWidth()/2, getHeight()/2-lineSize);
g.drawLine(getWidth()/2-lineSize, getHeight()/2, getWidth()/2, getHeight()/2+lineSize);
g.drawLine(getWidth()/2+lineSize, getHeight()/2, getWidth()/2, getHeight()/2+lineSize);
//计时器
g.setColor(0x0000ff);
g.drawString(Long.toString(System.currentTimeMillis()), 2, 2, Graphics.TOP|Graphics.LEFT);
}
//根据命令的选择启动线程
public void commandAction(Command c, Displayable d) {
// TODO Auto-generated method stub
if(c==startCommand){
thread=new Thread(this);
thread.start();
}
}
}
分享到:
相关推荐
通过分析并实践`threadTest`案例,我们可以深入理解Java多线程的原理和使用技巧,为编写高效并发程序打下坚实基础。同时,也要注意多线程编程中的死锁、活锁和饥饿等问题,合理设计线程间的交互,避免出现不可预期的...
继承 Thread 类是一种简单的多线程创建方式。只需要创建一个新的类,继承 Thread 类,并复写 run() 方法,就可以启动新线程并执行自己定义的 run() 方法。 Thread 类的生命周期 -------------------- Thread 类的...
在Java中,多线程是通过`Thread`类或实现`Runnable`接口来实现的。多线程可以提高程序的执行效率,尤其是在处理CPU密集型或I/O密集型任务时。在给定的代码片段中,并没有直接涉及到多线程的创建与使用,但是我们可以...
在这个“java多线程案例-龟兔赛跑”中,我们将探讨如何利用Java实现一个经典的并发编程示例,即模拟龟兔赛跑的故事。 在传统的龟兔赛跑故事中,兔子因为骄傲自满而打了个盹,结果被慢悠悠的乌龟超越,最终赢得比赛...
这个压缩包“多线程简单应用-每秒获取系统时间.zip”显然是为了演示如何在编程中实现多线程来实时获取系统时间。 首先,我们要理解什么是多线程。在单线程环境下,程序执行是顺序的,而多线程则允许多个任务同时...
资源包"ahao5"可能包含有关多线程和高并发实践的代码示例、教程、案例研究等,可以帮助开发者深入了解这两个主题。通过学习这些资源,你可以掌握如何设计和实现高效、稳定的多线程程序,以及如何构建能够处理大规模...
本案例"VB 多线程模块"着重于展示如何在VB中创建和管理多线程,以实现并发操作。 首先,VB中的多线程主要依赖于`System.Threading`命名空间,该命名空间提供了多种类来支持线程的创建和管理。其中,`Thread`类是...
在编程领域,多线程是一种常见的技术,它允许程序...理解并掌握多线程的概念、使用方法以及同步通信机制,对于成为一名优秀的程序员至关重要。通过实际案例,如Gdownload_V2.0,你可以更好地理解和实践这些理论知识。
这个“多线程终极案例程序”旨在帮助Java开发者深化对多线程的理解,通过一个具体的“多兵种联合攻击防御塔”游戏案例来实践。下面将详细解释该案例中的关键知识点。 首先,多线程是并发执行多个任务的能力,可以...
### JAVA多线程案例教学详析 #### 一、引言 随着计算机技术的发展,多核处理器已经成为标准配置,为了充分利用硬件资源,提高程序的执行效率,多线程编程成为了现代软件开发中不可或缺的一部分。Java作为一种广泛...
在Java编程语言中,多线程是并发编程的重要组成...通过这个教学案例,你可以深入了解Java多线程的使用,以及如何在实际场景中运用生产者消费者模式来解决问题。实践这部分知识,将有助于提升你在并发编程领域的技能。
通过学习这个示例项目,开发者不仅可以掌握STM32单片机的RT-Thread多线程编程,还能深入了解RTOS的运行机制,为进一步的嵌入式系统开发打下坚实基础。在实践中不断探索和优化,可以将STM32的性能发挥到极致。
本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。以下是这些实例可能涉及的关键知识点: 1. **线程创建**:C#中创建线程主要有两种方式,一是通过`System.Threading.Thread`...
9. **案例分析**:在这个37KB的压缩包中,`cpp`文件很可能包含了用C++实现的多线程客户-服务器示例代码。通过分析代码,我们可以深入理解如何在C++中创建和管理线程,以及如何处理客户请求和服务器响应。 10. **...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。本文将深入探讨Java多线程中...通过阅读和分析提供的`java多线程的案例源代码`,可以更直观地了解这些概念在实际中的应用。
在本项目"基于Java+socket实现多线程聊天室-控制台版"中,开发者创建了一个简单的、基于命令行界面的多人聊天应用。这个应用利用了Java编程语言以及Socket网络编程技术来实现实时的通信功能。以下是关于这个项目的...
在IT行业中,多线程编程是Java语言的一个重要特性,它允许程序同时执行多个任务,提高了应用程序的效率和响应速度。本主题将深入探讨“JAVA多线程编程详解-详细操作例子”,结合提供的资源,我们可以从以下几个方面...
### Java多线程编程详解与实战案例 #### 理解多线程概念与Java内存模型 多线程,作为现代编程中的一项关键技术,允许在单一应用程序中并发执行多个指令流,每个这样的指令流被称为一个线程。在Java中,线程被视为...
8. **实战案例**:通过实际项目或示例,展示如何在C++中设计和实现多线程应用程序,可能涵盖网络服务器、数据库连接池、并行计算等场景。 9. **异常安全**:在多线程环境中,如何确保代码在异常情况下也能正确清理...
在这个未完成的案例中,我们可能正在探讨如何在Java中创建和管理线程,以及处理多线程环境下的并发问题。下面是对Java多线程基础知识的详细解释: 1. **线程的创建方式**: - 继承`Thread`类:自定义一个新的类,...