`

网络多线程编程——01

    博客分类:
  • J2ME
阅读更多
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

    多线程编程——multithreading programming it is clear and easy and there is the detail comment for the key concepts

    多线程编程——实战篇

    接下来我们将通过一个具体的例子——“厨师-食客”模式来深入理解多线程编程的实际应用。 1. **模型介绍**: - 生产者(厨师):负责制作食物,并将其放入共享的“仓库”(桌子)。 - 消费者(食客):从“仓库”...

    多线程编程——线程的同步

    在“多线程编程之四——线程的同步”这个文件中,可能包含了上述各种同步机制的具体实现示例和详细说明,这对于初学者来说是一份非常宝贵的参考资料。通过学习和理解这些例子,开发者可以更好地掌握如何在实际项目中...

    多线程编程——MFC中的多线程开发

    多线程编程能够提高应用程序的效率和响应性,尤其是在进行耗时操作如网络通信、大数据计算或长时间的IO操作时。本篇文章将深入探讨MFC中的多线程开发,帮助初学者理解和掌握这一关键技能。 首先,我们需要了解多...

    多线程编程——信号量使用(Jack_semaphore_test.rar)

    多线程编程:信号量使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...

    多线程编程——互斥锁使用(Jack_pthread_mutex_test.rar)

    多线程编程:互斥锁使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...

    C++多线程编程——线程的挂起、唤醒与终止.pdf

    在C++多线程编程中,管理线程的生命周期是至关重要的。线程的挂起、唤醒和终止是其中三个关键的操作,它们允许开发者在程序中有效地控制并发执行的线程。下面我们将深入探讨这些概念及其相关的API函数。 首先,线程...

    c++11 多线程编程——如何实现线程安全队列

    线程安全队列的接口文件如下: #include template class threadsafe_queue { public: threadsafe_queue(); threadsafe_queue(const threadsafe_queue&); threadsafe_queue& operator=(const threadsafe_queue&...

    多线程编程——条件变量使用(Jack_pthread_cond_test.rar)

    多线程编程:条件变量使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...

    C++多线程编程——线程的挂起、唤醒与终止.docx

    总的来说,理解和正确使用线程的挂起、唤醒和终止是多线程编程中的关键技能,它们可以帮助我们更好地控制并发执行的流程,提高程序的响应性和效率。在实践中,务必确保线程的生命周期管理是安全和可靠的,避免出现...

    线程编程——多个参数传入线程中(Jack_thread_args_test.rar)

    线程编程——多个参数传入线程中。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”...

    java高级编程——多线程,输入输出流,网络编程

    java高级编程——对多线程,输入输出流,网络编程这三大块的深入讲解。

    多线程与多核编程——一本书的一部分。

    尽管多线程编程能够显著提高程序的性能和响应能力,但它也带来了一系列挑战: 1. **同步问题**:当多个线程访问相同的共享资源时,必须确保它们之间不会产生冲突,即需要正确地实现同步机制。 2. **死锁**:如果多...

    多线程编程教程——作者:韩耀旭

    ### 多线程编程教程概览 #### 一、多线程问题提出 在软件开发过程中,经常会遇到一些耗时较长的任务,例如网络请求、文件读写等。这些任务如果在一个单线程环境下运行,很容易导致整个应用程序在执行这些任务期间...

    c++多线程同步——信号量

    在C++编程中,多线程同步是一种关键的技术,它允许多个执行线程协同工作,以避免数据竞争和死锁等并发问题。信号量(Semaphore)是实现多线程同步的一种有效工具,常用于控制对共享资源的访问。在这个名为"Mthread11...

    多线程编程之一——问题提出

    ### 多线程编程之一——问题提出 在深入探讨多线程编程的复杂性和优势之前,我们首先需要明确为何要采用多线程编程,以及它所解决的问题是什么。多线程编程是现代软件开发中不可或缺的一部分,尤其是在高性能计算、...

    linux C语言 网络编程教程及源码

    18、Linux网络编程18——tcp并发服务器(多线程) 19、Linux网络编程——tcp高效并发服务器(select实现) 20、Linux网络编程——tcp高效并发服务器(poll实现) 21、Linux网络编程——tcp高效并发服务器(epoll实现...

    java上机报告5——Java的多线程编程1

    Java 多线程编程应用场景 —— 电影院售票系统设计 本资源摘要信息将对 Java 多线程编程在电影院售票系统设计中的应用进行详细介绍。该系统模拟了电影院三个售票窗口同时出售电影票的过程,通过 Java 多线程编程...

Global site tag (gtag.js) - Google Analytics