易截截图软件、单文件、免安装、纯绿色、仅160KB

java线程 返回线程中的信息 (二)

多线程环境中,比较掌握的事情之一就是如何返回线程的信息。因为run和start方法并不返回任何值。
    假设现在有两个线程,主线程和一个子线程,子线程读文件,主线程需要对文件的结果进行操作,当然,最简单的方法就是读文件和处理读出的文件全部都在主线程中进
行。
   
    线程如何返回信息? 首先,采用轮询的方法:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOError;
import java.io.IOException;
public class MainThread {

public static void main(String[] args) throws Exception {
File[] files = new File[5];
ReadFileThread rft = new ReadFileThread(new File("test4.txt"));
rft.start();
//rft.join();
/*需要一个好的方法,来保证 getContent在content准备好之前就调用*/
//System.out.println(rft.getContent());

/*采用轮询的方法*/
StringBuffer content = null;
while(true) {
content = rft.getContent();
if(content.length() > 0) {
System.out.println("文件内容为:" + content);
System.out.println("文件内容长度为:"+content.length());
break;
}
}
}

/*采用回调的方式,此方法为回调方法, 将会在子线程中调用*/
public static void receiveContent(StringBuffer content) {
System.out.println("文件内容为:" + content);
System.out.println("文件内容长度为:"+content.length());
}

}
class ReadFileThread extends Thread {

/*File对象引用*/
private File file;

/* content成员 */
private StringBuffer content;

/*获取文件内容方法*/
public StringBuffer getContent() {
return this.content;
}
/*构造函数初始化*/
public ReadFileThread(File file) {
this.file = file;
this.content = new StringBuffer();
}

/*线程run方法,读文件*/
public void run() {
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String temp = "";
while( (temp=br.readLine()) != null ) {
content.append(temp);
}


相关文档:

【奋斗第二天】菜鸟学Java之我的面向对象观续

昨天写了用面向对象的思想去分析一个实际的问题,呵呵,那么今天就就类和对象做一个详细的讨论。
昨天说了在CS中人物可能是一个抽象类或一个接口,而各种各样的人物就是继承或实现了这个接口,而说到这里我们还在讨论类,还没有涉及到对象,那么什么时候产生的对象呢?那是咱登陆了CS后选择了一个人物,然后再我们选好的同 ......

Java序列化与反序列化

java 中的序列化与反序列化代码:
//进行序列化
 public byte[] getByteArray(String[] str)
   {
     byte[] bt = (byte[])null;
     try {
       if (str != null) {
       & ......

Java 基本语法

Java 一共8种基本类型,4种整型,2种浮点类型,1种表示unicode编码的字符单元的字符类型char,1种表示真值的boolean类型。
4种整数类型
int, 4 字节
short,2字节
long,8字节
byte,1字节
2种浮点类型
float,4字节,很少情况适合使用float,数值有一个后缀F,没有后缀的浮点数值默认为double.也可以在浮点数值后面添 ......

Java Environment Building in Linux

2010-05-03
Linux AS 4
JDK
Sun JDK
http://java.sun.com/javase/downloads/index.jsp
Download Java SE Development Kit 6u20 for Linux, Multi-language
 Java SE Development Kit 6u20
 jdk-6u20-linux-i586-rpm.bin
Java SE Development Kit 6u20
 jdk-6u20-linux-i586.bin
Notes:现在的JDK ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号