用户工具

站点工具


分享:技术:多线程:多线程编程核心技术整理

这是本文档旧的修订版!


多线程编程核心技术整理

前言

2016年5月12日东哥在微信读书APP上送给我一本书《JAVA多线程编程核心技术》,作者高洪岩。在接下来的7天内读完了,感觉这本书写的挺好,作者基本把所有的知识点都结合代码例子来讲解,容易被程序员接受。其实在读的过程当中,就想着要把这本书的知识点做个整理,用于备忘也用于更好的掌握多线程。可能在我尝试整理知识点的时候,某些我觉得比较不常用的,我会比较简单的整理。

多线程基础

进程和多线程的概念及线程的优点

  • 进程

比如WINDOWS任务管理器里,看到的QQ.EXE,就是一个进程

  • 线程

比如QQ中的视频,发送文件,发送文字图片等,都是独立在运作的“线程”

  • 线程的优点

多线程或者说多任务操作系统,可以最大限度地利用CPU的空闲时间在不同的任务之间不停的切换,由于切换的速度非常快,使使用者感觉多个任务是在同时进行的。当然后来也出现多个CPU,或者一个CPU多核就是为了加快机器运算。

使用多线程

打印主线程的名字

Test.java
package com.gxx.threads.study.test1;
 
/**
 * 测试类-打印主线程的名字
 * @author Gxx
 */
public class Test {
	/**
	 * main方法
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 打印main方法当前线程名字
		 * 输出:main
		 */
		System.out.println(Thread.currentThread().getName());
	}
}

输出

main

两种实现线程类的方法

  • 继承Thread实现线程类
MyThread1.java
package com.gxx.threads.study.test2;
 
/**
 * 继承Thread实现线程类
 * @author Gxx
 */
public class MyThread1 extends Thread {
	/**
	 * 覆盖Thread中的run方法
	 */
	@Override
	public void run() {
		System.out.println("MyThread1.run()");
	}
}
  • 实现Runnable实现线程类
MyThread2.java
package com.gxx.threads.study.test2;
 
/**
 * 实现Runnable实现线程类
 * @author Gxx
 */
public class MyThread2 implements Runnable {
	/**
	 * 实现Runnable中的run方法
	 */
	@Override
	public void run() {
		System.out.println("MyThread2.run()");
	}
}
  • 两种实现的区别

本质上并没有什么区别,但是由于JAVA只支持单继承,如果继承了Thread就不能继承其它的父类了,所以绝大多数情况下是由于这个,而Thread类其实也实现了Runnable接口。

分享/技术/多线程/多线程编程核心技术整理.1464484813.txt.gz · 最后更改: 2016/05/29 09:20 由 gxx