多线程初探

Java多线程的启动方法:

  1. 继承Thread类
  2. 实现Runnable接口
  3. 匿名类的方式

先来看看多线程的威力如何,后续才有动力

用读取文件来测试:
给出一个文件夹,统计文件夹里的所有包含字符串str的文件个数

两种办法:
第一种是普通做法,递归查询,找到文件后就地查
第二种是多线程做法,也是递归查询,找到文件后为它新建一个查询线程,然后继续向下查

查了一个小文件夹:
在这里插入图片描述

普通程序:
public class Normal_file {
 private int ans = 0;
 
 public void searchFile(File folder, String str) {
  
  if(folder == null || false == folder.exists()) {
   System.err.println("找不到文件");
   return ;
  }
  if(folder.isFile()&&folder.getAbsolutePath().endsWith(".cpp")) {
   
   searchString(folder, str);
   
   return;
  }
  if(folder.isDirectory()){
   File[] files = folder.listFiles();
   if(files == null) return;
   for(File file : files) {
    searchFile(file, str);
   }
  }
 }
 
 private void searchString(File file, String str) {
  try {
   FileInputStream fis = new FileInputStream(file);
   byte[] arr = new byte[(int)file.length()];
   fis.read(arr);
   
   String s = new String(arr);
   if(s.contains(str)) {
    //System.out.println(ans + str +" 位置 : "+file.getAbsolutePath());
    ++ans;
   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 
 public void display() {
  System.out.println("共计找到 "+ans+" 个目标串");
 }
}
多线程程序
public class Mutiple_thread_file {
 
 private int threadNum = 0;
 
 public void searchFile(File folder, String str) {
  
  if(!folder.exists()) {
   System.err.println("找不到文件");
   return ;
  }
  if(folder.isFile()&&folder.getAbsolutePath().endsWith(".cpp")) {
   Thread t = new Thread() {
    public void run() {
     searchString(folder, str);
    }
   };
   t.start();
   threadNum++;
  }
  else if(folder.isDirectory()){
   File[] files = folder.listFiles();
   for(File file : files) {
    searchFile(file, str);
   }
  }
 }
 
 private void searchString(File file, String str) {
  try {
   FileInputStream fis = new FileInputStream(file);
   byte[] arr = new byte[(int)file.length()];
   fis.read(arr);
   
   String s = new String(arr);
   if(s.contains(str)) {
    System.out.println(str+" "+"位置 "+file.getAbsolutePath())

   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 
 public void display() {
  System.out.println("一共创建了"+threadNum+" 个线程");
 }
}
内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值