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

java线程简单总结

 
阅读更多
[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多线程知识点总结

    该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!

    java多线程全面总结

    java多线程全面总结,简单的介绍多线程技术中的各种应用问题,是你对多线程有更多的认识!

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    java多线程核心技术

    资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著 结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通信、锁等最难突破的核心技术与应用实践 Java多线程无处不在,如...

    java基础学习总结笔记

    Java基础常识、如何安装Java工具、Java语言的基础组成、Java面向对象、Java多线程、Java常用类、集合(重点)、IO流、GUI图形界面、网络编程、正则表达式、反射、注解、类加载器、动态代理等等,另外还包括银行管理...

    Java多线程简单Demo

    个人的小总结,适合初学者,包含了java多线程的基本概念,再配上简单的demo,相信初学者学习完对多线程能有较清晰的认识

    个人总结的深入java多线程开发

    看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...

    Java多线程设计模式(含实例源码)

    Java多线程设计模式,通过对多线程环境的分析,抽象出典型的多线程模型,结合Java编程语言的特性,总结出经典的多线程设计模式,通过本资料的学习,足以让您掌握如何使用JAVA编程技术来解决多线程问题,结合本书实例...

    java 线程方法join简单用法实例总结

    主要介绍了java 线程方法join简单用法,结合实例形式总结分析了Java线程join方法的功能、原理及使用技巧,需要的朋友可以参考下

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    总结Java中线程的状态及多线程的实现方式

    Java中可以通过Thread类和Runnable接口来创建多个线程,线程拥有五种状态,下面我们就来简单总结Java中线程的状态及多线程的实现方式:

    java concurrent source code

    资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著 结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通信、锁等最难突破的核心技术与应用实践 封底 Java多线程无处不在,...

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java知识点总结.zip

    多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛...

    JavaSE回顾总结(狂神说java).xmind

    javaSE回顾总结,学习笔记,查漏补缺...Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等.

    Java知识点总结,面试必备.zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

    《Java程序设计实训》报告 多人聊天室

    2、使用Java 的多线程机制,深入理解Java多线程技术的应用。  3、使用GUI,对JFrame的深入学习。 4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发。  5、使用C...

    JAVA程序员学习之路总结.zip

    JAVA程序员学习之路总结,内容包括但不限于数据结构、算法、数据库、操作系统、计算机网络等多方面 Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling...

    Java 多线程学习详细总结

    本文主要介绍 Java 多线程的知识资料,这里整理了详细的多线程内容,及简单实现代码,有需要的朋友可以参考下

    Java 排序算法知识点总结.zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

Global site tag (gtag.js) - Google Analytics