[size=large]
线程简单总结:
a、线程的简单理解:程序中一个独立运行单位。有单线程和多线程之分;单线程就是我们平常用得比较多的调用、嵌套;而接下来就着重介绍多线程。
b、多线程:即多个程序同时进行,其数据互不干扰和影响;
这里还要介绍下进程:简单地说、一个程序就是一个进程;而线程是一个进程内部的多个运行单位。进程只能调用数据、而线程不仅可以调用数据而且还可以改变数据。
在单核CPU中、多线进程是通过时间的停顿来实现。
c、多线程的实现:其实现过程可分为以下方法:
1、继承Thread类实现继承:主要是在run方法中重写方法来编写线程要实现的调用。然后调用start()方法来启动线程;
例:
public class CountFileThread extends Thread{
private String path;
private int count;
private String rootDirName;
//用构造器接收传递的路径和计数器
public CountFileThread(String path){
this.rootDirName=path;
}
//调用线程对象的start()方法后、线程就从它的
public void run(){
//定义一个当前时间的计时变量
long start=System.currentTimeMillis();
//调用文件统计方法
int fileCount=countDir(this.rootDirName);
//定义一个变量,得到当前运行所花时间
long timeCost=System.currentTimeMillis()-start;
//输出文件个数
System.out.println("磁盘"+this.rootDirName+"统计出的文件个数"+
fileCount+"/n统计所花时间:"+timeCost);
}
/*
* path 所传递路径
* size 返回统计的文件个数
*/
public int countDir(String path){
//用于统计文件个数
int size=0;
//先实例化一个文件对象
File file=new File(path);
//判断文件目录是否存在
if(!file.exists()){
return size;
}
//用数组将路径所在的文件存装
File[] subFile=file.listFiles();
//再进行判断列表子目录是否存在
if(subFile==null){
return size;
}
for(int i=0;i<subFile.length;i++){
//判断此文件是目录还是文件
if(subFile[i].isDirectory()){
//如果是目录,则进行递归调用
size+=countDir(subFile[i].getAbsolutePath());
}
//如果是文件,则进行直接相加
else if(subFile[i].isFile()){
size++;
}
}
return size;
}
}
2、实现Runnable接口创建线程:主要定义一个实现Runnable接口的类,实现run()方法、再将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例;再启动线程。其接口主要区别是同时实现多个线程。
例:
// 实例化对象、是每个磁盘做为一个线程
File[] file = File.listRoots();
for (int i = 0; i < file.length; i++) {
// 实例化对象
RunnableCount run = new RunnableCount(file[i].getAbsolutePath(),
i + 1);
// 磁盘中统计出的文件个数
// int count=run.countDir(file[i].getAbsolutePath());
// 构造Thread对象
Thread thread = new Thread(run);
// 启动线程
thread.start();
}
3、以内部类的方式创建线程:即在一个方法中创建线程、当方法被调用时,线程即启用;此方法也能同时实现多个线程。
例:
*
*这个方法会启动一个匿名匿名内部类线程
*/
private void MyThread(final int i, final String path) {
//实例化Runnable接口对象
Runnable run=new Runnable(){
public void run() {
int count=countDir(path);
System.out.println("第"+i+"个磁盘的文件总数是:"+count);
}
};
//最后启用这个内部线程
Thread thread=new Thread(run);
thread.start();
[/size]
分享到:
相关推荐
#### 一、Java线程:概念与原理 1. **操作系统中线程和进程的概念** - 当前的操作系统通常为多任务操作系统,多线程是实现多任务的一种手段。 - **进程**:指内存中运行的应用程序,每个进程拥有独立的内存空间。...
### Java线程详细总结 #### 一、Java线程简介 Java中的线程是一个轻量级的进程,它能够在一个程序中并发地执行多个任务。Java语言直接支持线程的概念,这使得Java成为多线程编程的理想选择。与进程相比,线程具有...
java多线程全面总结,简单的介绍多线程技术中的各种应用问题,是你对多线程有更多的认识!
### Java线程安全的核心概念与实践 #### 一、Java内存模型 理解Java线程安全首先需要掌握Java内存模型(JMM)。JMM是Java虚拟机(JVM)的一部分,它规定了程序中各种变量(包括实例字段、静态字段和构成数组对象的...
以下是对Java线程安全的详细总结: 1. **线程不安全问题** - 数据竞争:当多个线程同时访问并修改同一份数据时,如果没有适当的同步控制,可能导致数据的不一致。 - 死锁:两个或更多线程相互等待对方释放资源,...
《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...
### Java线程使用教程知识点详解 #### 一、线程基础概述 - **定义与特点**:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。Java是首个在语言级别明确支持线程特性的...
### Java线程总结教程知识点详解 #### 一、操作系统与多线程概念 - **多任务与分时操作系统**:现代操作系统(如Windows、Linux)能够实现多任务处理,即在用户看来似乎多个应用程序在“同时”运行。实际上,这是...
总结起来,Java线程涉及的内容广泛,包括线程的创建、控制、同步以及线程池的使用。理解这些知识点对于编写高效、安全的多线程Java应用程序至关重要。在实践中,合理地利用线程和同步机制,能有效提升程序的性能,...
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括线程的创建、线程的状态、同步机制以及线程安全问题。 1. **线程的创建*...
### Java线程教程知识点梳理 #### 一、教程概述 - **目标读者**: 本教程主要面向具备丰富Java基础知识但缺乏多线程编程经验的学习者。 - **学习成果**: 学习者能够掌握编写简单的多线程程序的能力,并能够理解和...
### Java线程与模式总结 #### 一、Java线程简介 Java中的线程机制是其一大亮点之一,它直接支持线程级别的并发处理。线程相比于进程具有创建成本低、上下文切换快等优势,这使得Java在处理高并发场景时能够表现出色...
### Java线程基础知识详解 #### 一、引言 随着计算机技术的发展,多核处理器已经成为了标配,这为多线程编程提供了强大的硬件支持。Java作为一种广泛应用的编程语言,在其设计之初便内置了对线程的支持,使得...
总结一下,"java线程理解小程序"主要涵盖了以下几个知识点: 1. Java线程的基本概念和创建方式:实现`Runnable`接口或继承`Thread`类。 2. Java并发包中的线程池:`ExecutorService`、`ThreadPoolExecutor`等。 3. ...
总结来说,这个压缩包提供了一个学习和实践Java多线程同步的实例。通过分析和运行这些代码,我们可以更好地理解如何在并发环境中控制线程的执行顺序,避免数据不一致,以及如何有效地设计和实现线程间的协作。对于...
### Java多线程编程总结 #### 一、Java多线程实现方式概述 Java多线程编程技术在软件开发中占据着重要的地位,特别是在需要处理并发任务或提高应用程序响应速度的场景下。Java中实现多线程的方式主要包括:继承`...