多线程初探

本文通过对比普通方法和多线程方法在文件搜索任务中的应用,详细展示了Java多线程编程的优势。采用递归查询文件夹并统计特定字符串出现次数的场景,直观呈现了多线程在提高程序效率方面的作用。

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+" 个线程");
 }
}
随着科技的不断发展,计算机视觉技术在各个领域中得到了广泛的应用。其中,图像处理是计算机视觉中的一个重要分支,它通过对图像进行数字化处理,提取出其中的有用信息,为后续的分析和应用提供支持。而裂缝面积识别系统是图像处理中的一个重要应用,它可以对裂缝进行自动化的检测和识别,为工程领域中的裂缝维护和修复提供帮助。 裂缝是建筑物和基础设施中常见的问题,它们的存在会对结构的稳定性和安全性产生重大影响。因此,及早发现和修复裂缝是非常重要的。然而,传统的裂缝检测方法通常需要人工参与,费时费力且容易出错。因此,开发一种自动化的裂缝面积识别系统具有重要的意义。 Python是一种简单易学且功能强大的编程语言,而OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和分析功能。将Python和OpenCV结合起来,可以快速开发出高效的图像处理算法,为裂缝面积识别系统的开发提供了便利。 本研究的目标是开发一个基于Python和OpenCV的裂缝面积识别系统,并提供相应的部署教程和源码。该系统将通过图像处理算法自动检测和识别裂缝,并计算出裂缝的面积。通过该系统,用户可以快速准确地获取裂缝的面积信息,为后续的维护和修复工作提供参考。 本研究的意义主要体现在以下几个方面: 提高工作效率:传统的裂缝检测方法需要人工参与,费时费力且容易出错。而基于Python和OpenCV的裂缝面积识别系统可以实现自动化的裂缝检测和识别,大大提高了工作效率。 提高准确性:人工参与的裂缝检测容易受到主观因素的影响,结果的准确性无法保证。而基于图像处理算法的裂缝面积识别系统可以准确地计算出裂缝的面积,提高了结果的准确性。 降低成本:传统的裂缝检测方法需要大量的人力和时间投入,成本较高。而基于Python和OpenCV的裂缝面积识别系统可以实现自动化的裂缝检测和识别,降低了成本。 推动技术发展:本研究将Pyt
数据要素资产运营平台:解锁数据财富的新钥匙 在当今这个数字化浪潮汹涌的时代,数据已经悄然成为推动社会进步和企业发展的核心要素。从国家战略到企业实践,数据要素资产运营平台正扮演着越来越重要的角色。那么,这个平台究竟有何魔力,能让数据从“沉睡”的资源变成“活跃”的资产呢?让我们一起揭开它的神秘面纱。 1. 数据要素:新时代的“金矿” 1.1 国家战略的引领 近年来,我国高度重视数据要素市场的发展。从中央全面深化改革委员会审议通过的《关于构建数据基础制度更好发挥数据要素作用的意见》,到“数据二十条”的发布,无一不彰显着国家对数据要素市场的重视和期待。这些政策文件不仅为数据要素市场的发展指明了方向,更为企业数据资产化提供了坚实的政策保障。 趣味解读:想象一下,数据就像是一座未被完全发掘的金矿,而国家政策就是那把开启金矿的钥匙。有了这把钥匙,企业就能在这座金矿中挖掘出无尽的财富。 1.2 数据要素的经济价值 数据要素对提高生产效率有着不可忽视的乘数作用。它不仅能赋能其他生产要素,还能通过交易流通实现价值的最大化。企业可以将自身的数据资产进行变现,开拓新的盈利模式;同时,数据资产还能作为质押物获取银行贷款,甚至入股成为企业的股东,分享企业利润。 具体场景:一家制造企业通过数据资产化,将其生产过程中的各项数据进行分析和挖掘,发现了提高生产效率的新方法。这不仅降低了生产成本,还提高了产品质量,从而在市场上获得了更大的竞争优势。同时,该企业还将其数据资产进行质押贷款,获得了急需的资金支持,进一步推动了企业的发展。 2. 数据资产化全流程服务:从数据到资产的蜕变 2.1 数据资产登记:确权与合规的起点 数据资产登记是数据要素流通的必要前提。它通过对数据资产进行确权,明确数据的权利主体和内容,为后续的数据流通交换、融合开发提供重要依据。在数据资产登记过程中,需要遵循相关法律法规和标准规范,确保数据资产的合法合规性。 技术解析:数据资产登记平台采用线上线下双重合法合规核验核查机制,对数据资产的合规性、真实性和权属权利进行检查、核验和确认。这一过程就像给数据资产颁发了一张“身份证”,让它能够在市场上自由流通。 2.2 数据核验与质量评价:提升数据价值的基石 数据核验与质量评价是确保数据资产价值的关键环节。通过对数据资产进行线上线下双重核验,出具数据资产核验报告和认证结果,提升企业数据资产的合法合规性管理能力。同时,依据相关标准对数据质量进行评价,发现数据质量问题并进行改进,提高数据资产的可用性和价值。 趣味比喻:数据核验与质量评价就像是对数据资产进行的一次全面“体检”。只有通过“体检”的数据资产,才能被认为是健康、有价值的,才能在市场上流通和交易。 2.3 数据资产价值评估与入表:量化数据价值的里程碑 数据资产价值评估是将数据资产的价值量化的过程。它依据相关标准和评估方法,对数据资产的价值进行评估,为数据资产的交易、融资等提供依据。而数据资产入表则是将数据资产纳入企业资产负债表,反映其真实价值与业务贡献。 实际案例:某企业通过数据资产价值评估,发现其拥有的大量客户数据具有极高的商业价值。于是,该企业将这些数据资产进行入表处理,不仅提高了企业的总资产价值,还改善了资产负债结构,降低了资产负债率。 3. 数据要素市场流通关键环节与生态建设:构建数据流通的桥梁 3.1 公共数据授权运营:激发数据潜能的新模式 公共数据授权运营是通过建立公共数据授权运营工作机制、构建授权运营综合评价和服务体系,促进公共数据要素的市场化流通。它围绕重点产业建立应用场景示范,助力产业数字化发展;同时,对使用公共数据所产生的收益进行分配和管理,促进相关运营方的积极性。 应用场景:在智能制造领域,公共数据授权运营可以为企业提供丰富的设备状态、生产流程等数据资源。企业通过分析这些数据,可以优化生产流程、提高生产效率、降低能耗等,从而实现数字化转型和智能化升级。 3.2 可信数据空间:保障数据安全流通的“保险箱” 可信数据空间采用“数据不出域、可用不可见、可控可计量”的应用模式,为数据流通提供安全可靠的路径。它配套应用于数据供需双方由于业务关联而发生数据交换协同的场景,解决可信管控、数据溯源、多元数据无缝融合等现实障碍。 技术解析:可信数据空间通过区块链、人工智能、大数据等技术手段,构建了一个安全、可信的数据交换环境。在这个环境中,数据供需双方可以放心地进行数据交换和共享,而不用担心数据泄露和滥用等问题。 4. 核心技术与应用场景:数据要素资产运营平台的“心脏”与“四肢” 4.1 区块链技术:保障数据流通的安全与可信 区块链技术以其去中心化、不可篡改等特点,在数据要素资产运营平台中发挥着重要作用。它通过对数据资产的登记、核验、交易等环节进行上链
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值