易截截图软件、单文件、免安装、纯绿色、仅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语言中关键字讲解(二)transient的用途

1.什么是序列化
对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可 能需要 将 对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力 。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的序列化(Serialization) 。序列化 ......

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


大学两年了,一直浑浑噩噩,最近上了一些学习论坛,发现自己的知识太匮乏了,感觉怎么的自己也是个软件专业的学生,学了两年讲到应用却什么都不会,于是我觉得开始奋斗的人生!!!于是我选择了Java这么语言作为我奋斗的起点,原因很多,第一,在大学学过C和C++(只是学过,学的很不好),所以有点编程的基础吧,第二,Ja ......

java的相关技术

     1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。
  2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。
  3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟 ......

java int 转为string的三种方法


JAVA中 int 类型要转化成 String 类型,可以有三种方式,分别是:
(1) String.valueOf(i) 
 (2) Integer.toString(i) 
(3) i+""
其中:第二种是效率最高的,耗时是其他两种的一半。
String.valueOf(i):891
Integer.toString(i):468
i+"":844
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号