建立一个程序,写2个线程,同时对一个文件里面写入字符串,另外一个程序读取输出在控制台,保证读取的实时性。
2015-11-24 15:16
676 查看
第一个程序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();
}
}
}
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();
}
}
}
相关文章推荐
- Dropdownlist验证是否选择
- Cocos2d-x 常用语句
- 安卓带点击效果的圆角button
- 使用ruby解析纯真IP库(qqwry.dat)
- 软件测试总览
- 协议森林12 天下为公 (TCP堵塞控制)
- DARPA dataset介绍
- Tag system implementation
- 统计一个文件中的字符数,单词数,制表符。
- 自动换行LinearLayout
- Summary of problems when coding
- 利用UDP传输结构体数据 structdata over udp
- schema文件中cube的事实表使用视图方法
- PHP 数组和对象的相互转化
- js防xss注入
- div距页面顶部有间隙
- 使用android SpannableStringBuilder实现图文混排源码
- 使用 Screen 创建并管理多个 shell
- SVG 在线编辑器
- Oracle之常用FAQ--备份与恢复