[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多线程编程是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中实现多线程的方式主要包括:继承`...