A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李靖 中级黑马   /  2012-10-27 09:58  /  1249 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class MyClassLoader {
/**
  * @param args
  */
public static void main(String[] args) throws Exception {
  final String srcPath = args[0];
  String desDir = args[1];
  String desFileName = srcPath.substring(srcPath.lastIndexOf('\\') + 1);
  final String desPath = desDir + File.separator + desFileName;
  new Thread(new Runnable() {
   FileOutputStream fos = new FileOutputStream(desPath);
   FileInputStream fis = new FileInputStream(srcPath);
   @Override
   public void run() {
    // fos=new FileOutputStream(desPath);
    for (int i = 0; true; i++) {
     try {
      cypher(fis, fos);
      System.out.println("外部线程");
      new Thread(new Runnable() {
       @Override
       public void run() {
        try {
         cypher(fis, fos);
         System.out.println("内部线程");
        } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
       }
      }).start();
      // fis.close();
      // fos.close();
     } catch (Exception e) {
      e.printStackTrace();
     }
    }
   }
  }).start();
}
public static void cypher(InputStream inputStream, OutputStream outputStream)
   throws Exception {
  int len = -1;
  byte[] bufr = new byte[1024];
  while ((len = inputStream.read(bufr)) != -1) {
   outputStream.write(bufr, 0, len);
  }
}
}
如上代码,内部线程和外部线程都用到了FileOutputStream fos = new FileOutputStream(desPath);
   FileInputStream fis = new FileInputStream(srcPath);两个资源,为什么没有导致死锁现象的发生呢?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
大家有谁比较明白,多线程的资源共享,给说说白
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马