`
zhouyancheng
  • 浏览: 7523 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

线程总结

 
阅读更多
线程总结:
   每一个JAVA程序都至少有一个线程-主线程。当一个Java程序运行时,JVM会创建主线程,并在该线程中调用main()方法,
因此,线程可以理解为“程序内部一个独立运行单位”。

   1.线程与进程的区别:
     当我们打开windows任务管理器时,我们发现里边有一个进程,而这里的一个进程,可以说一个应用程序就是一个进程,
而线程是一个进程内部的多个运行单位。且多个进程的内部数据和状态都是完全独立的。

   2.线程的特点:
      线程是一个进程的运算单位,入过你的电脑是单核的,那么你的电脑每次最多只能运行一个线程,双核的能运算两个,
多核的电脑能运行多个,超级计算机就是通过无数个CPU的叠加才弄出来的,而且一个线程要运行完不是一次运行完成的,它会
每运行一段时间就会切换到另外一个线程,如此反复,知道线程运行完成。

   3.线程的实现:
      a.继承Thread类实现线程:(下面是继承Thread类统计全盘个数)
/**
* 统计全盘文件个数的线程类
* @author Administrator
*
*/
public class Threadclass extends Thread{
private String path;//要统计的文件的路径


    //构造方法传入路径
public Threadclass(String path){
this.path=path;
}


/**
* 重写Thread类里的run方法
*/
public void run(){
int num=countfile(path);
System.out.println(path+"盘中共有"+num+"个文件");
}


/**
* 统计文件的方法
*/
public int countfile(String path){
//定义一个统计文件个数的变量
int count=0;
//创建一个File对象
File file=new File(path);
    if(!file.exists()){
    return count;
    }
    File[] subfile=file.listFiles();
   if(subfile==null){
   return count;
   }
   for(int i=0;i<subfile.length;i++){
   File f=subfile[i];
   if(f.isDirectory()){
   count+=countfile(f.getAbsolutePath());
   }else if(f.isFile()){
   count++;
   System.out.println(f.getName());
   }
   }
return count;

}
}
      b.重写Runnable接口的方法实现线程:(下面是重写Runnable接口方法统计全盘文件个数)
public class Myrunnable implements Runnable{
private String path;
    /**
     * 程序运行的主方法
     * @param args
     */
public static void main(String args[]){
File[] file=File.listRoots();
for(int i=0;i<file.length;i++){
File f=file[i];
Myrunnable rbl=new Myrunnable();
Thread td=new Thread(rbl);
td.start();
}
}
/**
* 构造方法传入路劲参数
*/
public Myrunnable(){
this.path=path;
}

/**
* 重写Runnable的run方法
*/
public void run() {
int num=filecount(path);
System.out.println(path+"盘中共有"+num+"个文件");
}

/**
* 统计程序总数的方法
* @return  返回文件的个数
*/
    public int filecount(String path){
    //定义一个计数器,用来统计文件个数
      int count=0;
    //创建一个File对象
    File file=new File(path);
   if(!file.exists()){
    return count;
    }
File[] subfile=file.listFiles();
if(subfile==null){
return count;
   }
    for(int i=0;i<subfile.length;i++){
File f=subfile[i];
  if(f.isDirectory()){
   count+=filecount(f.getAbsolutePath());
}else if(f.isFile()){
   count++;
   System.out.println(f.getName());
}
}
return count;
    }

}

      c.内部类创建线程
            内部类和上述方法相似,只要把这些写入内部类就OK。
分享到:
评论

相关推荐

    C#.net同步异步SOCKET通讯和多线程总结2[参照].pdf

    C#.net 同步异步 SOCKET 通讯和多线程总结 本文旨在总结 C#.net 中的同步异步 SOCKET 通讯和多线程编程,涵盖服务端和客户端的实现细节。 一、服务端实现 服务端使用 System.Net 和 System.Net.Sockets 命名空间...

    windows多线程总结

    【Windows多线程总结】 Windows操作系统提供了一套完整的API来支持多线程编程,使得开发者可以在同一进程中同时执行多个线程,实现并发处理任务。本文将深入探讨Windows多线程编程的基本概念、线程同步、线程池以及...

    JAVA多线程总结

    【JAVA多线程总结】 Java 多线程是Java编程中的关键特性,它允许程序同时执行多个任务,提高系统的效率和响应性。本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java...

    C#.net同步异步SOCKET通讯和多线程总结

    C#.net同步异步SOCKET通讯和多线程总结 C#.net同步异步SOCKET通讯和多线程总结是指在C#.net环境下实现的同步异步套接字通信和多线程编程的总结。套接字(Socket)是tcp/ip网络协议接口,内部定义了许多的函数和例程...

    java多线程总结(一)

    ### 总结 Java多线程提供了强大的并发处理能力,开发者可以通过继承`Thread`类或实现`Runnable`接口来创建和管理线程。正确使用`start()`方法而非`run()`方法是确保线程正确启动的关键。理解Java多线程的工作原理和...

    Java线程总结教程

    ### Java线程总结教程知识点详解 #### 一、操作系统与多线程概念 - **多任务与分时操作系统**:现代操作系统(如Windows、Linux)能够实现多任务处理,即在用户看来似乎多个应用程序在“同时”运行。实际上,这是...

    C++多线程总结[归纳].pdf

    C++多线程总结 本文档对C++多线程编程进行了总结,介绍了三种创建线程的方法:CreateThread函数、AfxBeginThread函数和_beginthread()/_beginthreadex()函数,同时对线程的管理和终止进行了详细的讲解。 ...

    Java线程总结.pdf

    总的来说,Java线程总结的知识点涵盖了线程的基本概念、创建与管理、生命周期、同步机制、线程间通信以及线程的活跃性问题。理解和掌握这些知识点对于开发高效、稳定、并发的Java应用程序至关重要。

    线程总结笔记

    ### 线程总结笔记——基于Linux环境下的线程控制与同步 #### 一、引言 本篇“线程总结笔记”主要针对Linux环境下多线程编程中的关键概念进行了整理与归纳,尤其是针对线程同步的问题进行了深入探讨。通过一个具体...

    c#多线程总结文档.ppt

    c# 多线程总结

    MFC 多线程总结

    在Windows应用程序开发中,MFC(Microsoft Foundation Classes)框架提供了对多线程的支持,使得开发者可以构建更加复杂的并发系统。MFC中的线程分为两类:工作者线程和用户界面线程,它们各自有不同的特性和用途。 ...

    Java并发编程实践(java concurrency in practice)pdf (java多线程总结.ppt)

    配合`JAVA多线程总结.ppt`,你可以得到一个更直观和简洁的概览,快速回顾和掌握上述关键知识点。虽然中文版翻译可能存在不足,但原版英文书籍通常能更准确地传达作者的意图和细节,值得深入阅读。

    C#dotnet同步异步SOCKET通讯和多线程总结

    C#dotnet同步异步SOCKET通讯和多线程总结

    java多线程总结

    本文将深入探讨Java多线程的相关知识点,包括线程的创建、线程的状态、同步机制以及线程安全问题。 1. **线程的创建** Java提供了两种创建线程的方式: - **继承Thread类**:自定义类继承Thread类,并重写run()...

    我总结的Java线程总结

    Java线程是并发编程的核心部分,它允许程序在同一时间执行多个任务,极大地提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当创建...

    JAVA线程总结,包含线程池,显示使用线程实现异步编程,基于JDK中的Future实现异步编程,JDK中的FutureTask等

    JAVA线程总结,包含线程池,显示使用线程实现异步编程,基于JDK中的Future实现异步编程,JDK中的FutureTask等

    C++多线程总结

    本文将对C++中三种常见的线程创建方法进行总结,并讨论线程同步的相关知识。 1. 使用 `CreateThread` 函数生成的线程 - **函数原型**:`HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD ...

    MFC多线程总结.doc

    MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序开发,它提供了对Windows API的封装,包括多线程支持。在MFC中,多线程分为两类:工作者线程(Worker Thread)和用户界面线程...

Global site tag (gtag.js) - Google Analytics