建立一个程序,写2个线程,同时对一个文件里面写入字符串,另外一个程序读取输出在控制台,保证读取的实时性。

来源:互联网 发布:js密码和确认密码校验 编辑:程序博客网 时间:2024/05/17 04:38

第一个程序2个线程写入:

package com.ly.IO;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class TestThread {


public static void main(String[] args) {

T1 t1=new T1();
T2 t2=new T2();
t1.start();
t2.start();
 


}
}


class T1 extends Thread{
public void run(){
//上锁
synchronized(this){
BufferedWriter bw=null;
BufferedReader br=null;
try {
bw = new BufferedWriter(new  FileWriter("C:\\java\\IO\\io5"));
br=new BufferedReader(new FileReader("C:\\java\\IO\\io5"));
} catch (IOException e1) {
e1.printStackTrace();
}

try {


String s=null;
for(int i=0;i<=20;i++){
 s=String.valueOf(Math.random());
bw.write(s);
bw.newLine();

}
bw.flush();
 while((s=br.readLine())!=null){
System.out.println("线程1:"+""+s);
try {
 
//输出后暂停
Thread.sleep(10000);
} catch (InterruptedException e) {

e.printStackTrace();
}
 }
 
 bw.close();
 br.close();
} catch (IOException e) {

e.printStackTrace();
}
 


 }
}
}


class T2 extends Thread{
public void run(){
//上锁
synchronized(this){
BufferedWriter bw=null;
BufferedReader br=null;
try {
bw = new BufferedWriter(new  FileWriter("C:\\java\\IO\\io5"));
br=new BufferedReader(new FileReader("C:\\java\\IO\\io5"));
} catch (IOException e1) {
e1.printStackTrace();
}

try {
String s=null;
for(int i=0;i<=20;i++){
 s=String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
 while((s=br.readLine())!=null){
System.out.println("线程2:"+""+s);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
 }
 
 bw.close();
 br.close();
} catch (IOException e) {

e.printStackTrace();
}
 

 }
 
}
}

第二个读写:

package com.ly.IO;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class ReadTestThread {


public static void main(String[] args) {
try {
BufferedReader br=new BufferedReader (new FileReader("C:\\java\\IO\\io5"));
String s=null;
try {
while((s=br.readLine())!=null){
System.out.println(s);
}
} catch (IOException e) {

e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();



}


}


0 0