Thread 多线程的使用案例-简单
程序员文章站
2022-03-02 19:31:37
...
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(); } } }
上一篇: 谈谈用例模型的那些事儿 之 注意什么