java编程大题
2015-06-21 10:04
429 查看
设计4个线程,线程1每次对整数j增加1,线程2将j 数据写入文件“file.dat”中,线程3每次对整数j减少1,线程4 将文件“file.dat”中数据值为j的数据删除。写出程序。
package 多线程; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; public class ThreadDemo { public int j; public T1 t1; public T2 t2; public T3 t3; public T4 t4; ThreadDemo(){ j=1; t1 = new T1(); t2 = new T2(); t3 = new T3(); t4 = new T4(); } public class T1 implements Runnable{ public void run(){ j++; System.out.println("T1: j="+j); j++; System.out.println("T1: j="+j); } } public class T2 implements Runnable{ public void run(){ try { FileWriter fw = new FileWriter("file.dat",true); fw.write(j+"\r\n"); fw.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("File not found"); e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } System.out.println("T2: write j to file.dat, j="+j); } } public class T3 implements Runnable{ public void run(){ j--; System.out.println("T3: j="+j); } } public class T4 implements Runnable{ public void run(){ String temp=""; String result=""; boolean flag = true; System.out.println("T4: 删除j="+j+"的数据"); try{ FileWriter fw = new FileWriter("temp.dat"); DataInputStream dis = new DataInputStream( new BufferedInputStream( new FileInputStream("file.dat"))); while( (temp = dis.readLine() )!=null){ if( temp.equals(String.valueOf(j) ) ){ System.out.println("删除"+j); }else{ fw.write(temp+"\r\n"); System.out.println("复制"+String.valueOf(temp)+"到temp.dat"); } } fw.close(); dis.close(); }catch(EOFException eof){ System.out.println("文件读取结束"); }catch(NullPointerException npe){ npe.printStackTrace(); }catch(Exception e){ System.out.println("其他错误"); } File f1 = new File("file.dat"); File f2 = new File("temp.dat"); f1.delete(); f2.renameTo(f1); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ThreadDemo td = new ThreadDemo(); td.t1.run(); td.t2.run(); td.t3.run(); td.t4.run(); } }
相关文章推荐
- java 易混淆知识点
- JAVA集合中不可重复性与是否有顺序
- Java知多少(99)Graphics2D类的绘图方法
- jdk环境配置
- java - extends 和 implements 的区别
- Java线程8:为什么进行数据同步
- Java线程6:慎重使用volatile关键字
- Java线程7:线程数据传递
- Java线程5:join方法的使用
- Java线程4:线程的生命周期
- Java线程3:使用Runnable接口创建线程
- Java线程2:用Thread类创建线程
- Java线程1:概述
- CXF WebService整合Spring
- Spring @Transactional
- Java 基于数组自定义实现容量可变向量Vector
- java笔记27 编码表与编码转换
- struts搭建基本配置
- java笔记26 IO流其他对象
- JAVA词汇大全