前言
小咸儿要开始向多线程的领域进军了,第一件事当然是先来了解一下它的背景,这样才能够宏观把控,立于不败之地。首先先来学习几个概念:
叙述
宝图
线程与进程
进程:就是独立的一个应用程序,在进程中,会有N多个线程。例如一列火车
线程:一条执行路径。例如每一节火车车厢
多线程:所有线程的集合。例如多节火车车厢
多线程的目的: 提高程序效率,而不能提高下载速度。
同步与异步
同步:代码自上至下顺序执行
异步:新的执行路径,不会影响其他的线程
五种状态
这里的五种状态,指的是线程的五种状态:新建、就绪、运行、阻塞、死亡
那么这五种状态是如何转化的呢?
守护线程与非守护线程
守护线程:也被成为后台线程,即和main相关的线程,其中典型代表JVM的垃圾回收线程
非守护线程:用户线程属于非守护线程,即用户创建的线程,如果主线程停止掉,不会影响用户。如果将非守护线程设置为守护线程,也十分的简单,调用Thread对象的setDaemon(true)方法即可。
new Thread.setDaemon(true)
创建线程的四种方式
继承Thread类,并重写run()方法
package com.practice.demo.thread;
/**
* 线程的第一个实例,继承Thread类
* @author Phyllis
* @date 2019年6月30日15:08:26
*/
public class FirstThread extends Thread{
private int i;
/**
* 重写run()方法,run()方法的方法体就是线程执行体
*/
@Override
public void run(){
for (; i<100 ;i++){
// 当线程类继承Thread类时,直接使用this即可
System.out.println(getName()+" "+i);
}
}
public static void main(String[] args){
for (int i=0; i<100; i++){
// 调用Thread的currentThread()方法获取当前线程
System