package com;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class WLcf extends MIDlet implements CommandListener {
private Display disa;
private Form forma;
private TextField tfd1,tfd2,tfd3;
private Command exitCmd,nextCmd,backCmd;
private Alert al;
private TextBox tbx;
String stra;
private boolean condition=false;
public WLcf() {
this.ont();
al = new Alert("提示信息");
al.setTimeout(Alert.FOREVER);
al.setString("移动查询初级版本");
disa=Display.getDisplay(this);
Gauge gauge = new Gauge(null, false, Gauge.INDEFINITE, Gauge.INCREMENTAL_IDLE);
al.setIndicator(gauge);
disa=Display.getDisplay(this);
disa.setCurrent(al,forma);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
this.condition=false;
threadm th=new threadm(this);
th.start();
}
public void commandAction(Command cmd, Displayable dis) {
if(cmd==exitCmd){
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(cmd==nextCmd){
this.two();
synchronized(this){
this.condition=true;
notify();
}
disa.setCurrent(this.tbx);
}
if(cmd==backCmd){
disa.setCurrent(forma);
}
}
public void ont(){
forma =new Form("");
tfd1=new TextField("city", "", 200, 0);
tfd2=new TextField("start", "", 200, 0);
tfd3=new TextField("end", "", 200, 0);
exitCmd=new Command("exit",Command.EXIT,1);
nextCmd=new Command("next",Command.SCREEN,1);
forma.addCommand(exitCmd);
forma.addCommand(nextCmd);
forma.append(tfd1);
forma.append(tfd2);
forma.append(tfd3);
forma.setCommandListener(this);
}
public void two(){
tbx=new TextBox("您的信息", "", 89939, 0);
backCmd=new Command("back",Command.BACK,1);
tbx.addCommand(backCmd);
tbx.setCommandListener(this);
}
public String neirong(){
String url="http://www.google.com";
try {
HttpConnection conn=(HttpConnection)Connector.open(url);
InputStream istr=(InputStream)conn.openInputStream();
int ch;
StringBuffer sbf=new StringBuffer();
while((ch=istr.read())!=-1){
sbf.append((char)ch);
stra=sbf.toString();
}
istr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stra;
}
class threadm extends Thread{
MIDlet parents;
public threadm(MIDlet parents){
this.parents=parents;
}
public void run(){
while(true){
synchronized(parents){
while(!condition){
try {
parents.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
condition=false;
}
neirong();//初始化这个方法返回stra的值
tbx.setString(stra);//给textBox加内容是应该在这里加
}
}
}
}
分享到:
相关推荐
多线程编程——multithreading programming it is clear and easy and there is the detail comment for the key concepts
接下来我们将通过一个具体的例子——“厨师-食客”模式来深入理解多线程编程的实际应用。 1. **模型介绍**: - 生产者(厨师):负责制作食物,并将其放入共享的“仓库”(桌子)。 - 消费者(食客):从“仓库”...
在“多线程编程之四——线程的同步”这个文件中,可能包含了上述各种同步机制的具体实现示例和详细说明,这对于初学者来说是一份非常宝贵的参考资料。通过学习和理解这些例子,开发者可以更好地掌握如何在实际项目中...
多线程编程能够提高应用程序的效率和响应性,尤其是在进行耗时操作如网络通信、大数据计算或长时间的IO操作时。本篇文章将深入探讨MFC中的多线程开发,帮助初学者理解和掌握这一关键技能。 首先,我们需要了解多...
多线程编程:信号量使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...
多线程编程:互斥锁使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...
在C++多线程编程中,管理线程的生命周期是至关重要的。线程的挂起、唤醒和终止是其中三个关键的操作,它们允许开发者在程序中有效地控制并发执行的线程。下面我们将深入探讨这些概念及其相关的API函数。 首先,线程...
线程安全队列的接口文件如下: #include template class threadsafe_queue { public: threadsafe_queue(); threadsafe_queue(const threadsafe_queue&); threadsafe_queue& operator=(const threadsafe_queue&...
多线程编程:条件变量使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...
总的来说,理解和正确使用线程的挂起、唤醒和终止是多线程编程中的关键技能,它们可以帮助我们更好地控制并发执行的流程,提高程序的响应性和效率。在实践中,务必确保线程的生命周期管理是安全和可靠的,避免出现...
线程编程——多个参数传入线程中。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”...
java高级编程——对多线程,输入输出流,网络编程这三大块的深入讲解。
尽管多线程编程能够显著提高程序的性能和响应能力,但它也带来了一系列挑战: 1. **同步问题**:当多个线程访问相同的共享资源时,必须确保它们之间不会产生冲突,即需要正确地实现同步机制。 2. **死锁**:如果多...
### 多线程编程教程概览 #### 一、多线程问题提出 在软件开发过程中,经常会遇到一些耗时较长的任务,例如网络请求、文件读写等。这些任务如果在一个单线程环境下运行,很容易导致整个应用程序在执行这些任务期间...
在C++编程中,多线程同步是一种关键的技术,它允许多个执行线程协同工作,以避免数据竞争和死锁等并发问题。信号量(Semaphore)是实现多线程同步的一种有效工具,常用于控制对共享资源的访问。在这个名为"Mthread11...
### 多线程编程之一——问题提出 在深入探讨多线程编程的复杂性和优势之前,我们首先需要明确为何要采用多线程编程,以及它所解决的问题是什么。多线程编程是现代软件开发中不可或缺的一部分,尤其是在高性能计算、...
18、Linux网络编程18——tcp并发服务器(多线程) 19、Linux网络编程——tcp高效并发服务器(select实现) 20、Linux网络编程——tcp高效并发服务器(poll实现) 21、Linux网络编程——tcp高效并发服务器(epoll实现...
Java 多线程编程应用场景 —— 电影院售票系统设计 本资源摘要信息将对 Java 多线程编程在电影院售票系统设计中的应用进行详细介绍。该系统模拟了电影院三个售票窗口同时出售电影票的过程,通过 Java 多线程编程...