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();
}
}
}
分享到:
相关推荐
一个简单的java多线程的开发案例。简单并易于理解,同时附加 生产者消费者模式
powerbuilder多线程示例10个thread powerbuilder 9 8836制作
java socket和多线程(Thread)实例 - JAVA SSH AJAX JS CSS - JavaEye技术网站
Qt案例之利用QThread类实现简单多线程案例循环打印数字,可参考文章:https://blog.csdn.net/didi_ya/article/details/122661092
多线程学习的一些基础案例,帮助理解多线程的一些概念以及Java中Thread类的使用,跟博主文章-多线程配套
学习完本章, 读者就能在Thread多线程中进行数据的传递了。4.讲解了synchronized关键字 , 它使用起来比较麻烦, 所以在Java5中提供了Lock 对象 , 以求能更好地实现并发访问时的同步处理, 包括读写锁等相关技术点...
java 多线程 数据流 tcp thread i/o
这篇文章主要介绍了python多线程并发及测试框架案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、循环创建多个线程,并通过循环启动执行 import ...
此为以斗图网抓取图片,以多线程为基础的Python为实例
Java多线程编程实战指南核新篇以及设计篇以及和核新篇的案例代码
在Java中只支持单继承,因此通过继承Thread类创建线程有一定的局限性,这时可以使用另一种方式,即实现Runnable接口来...接下来在案例中将通过实现Runnable接口方式创建线程,并实现多线程分别打印0~99的数字的功能。
iOS多线程编程之NSThread的使用案例源码,1、简介:1.1 iOS有三种多线程编程的技术,分别是:1.、NSThread 。2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用)3、GCD 全称:Grand ...
python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。并且在Python3中废弃了thread模块,保留了更强大的threading模块。 使用场景 在python的原始解释器CPython中...
#juc多线程 java.util.concurrent(并发) ##概念复习 进程:正在进行中的程序 线程:进程当中的一个执行单元 关系: 进程包含线程 面试问题: 日常使用进程/线程的案例或者case ###线程的各种状态: Thread.state --枚举 ...
文章目录1、进程与线程2、创建多线程2.1、继承Thread类2.2、实现Runnable接口2.3、使用匿名内部类实现2.4、实现Runnable接口的好处2.5、使用Callable和Future创建线程3、线程的生命周期4、几种特殊线程4.1、join线程...
案例的结果显示,4个线程分别等待了4,2,5,3秒,程序运行的总时间是5秒,main()函数最后一个循环的作用是等待所有子线程退出
android developer->training->sending operations to multiple threads 的例子。demo的例子叫threadSample.zip。这个例子请结合官网文档看,对android多线程处理给出了一个解决方案,写的相当好。
Java多线程 《 Java多线程编程核心技术》书上案例代码 每一个小样本里面都有我自己的理解,和书上的一些关键点注释,一般在主要方法里面,少部分可能在类里面 感谢lamersan
文章目录一、threading...(1)3、守护进程实例 (2)七、线程同步(Look)1、代码案例2、Look线程同步案例3、 with语法用于线程同步案例八、多线程与多进程的理解(代码实例)1、 共享数据(内存地址)2、进程和线程的执行速度
只有可以被多线程访问的共享资源才需要考虑锁定,比如静态变量,再比如某些缓存中的值,而属于线程内部的变量不需要锁定。 2)多使用lock,少用Mutex 如果你一定要使用锁定,请尽量不要使用内核模块的锁定机制,...