• 线程和进程
    线程就是一条执行路径。
    进程是指一个独立的应用程序,进程可以看做是一些线程的集合。

  • 进程是如何工作的
    人为总是认为线程是同时进行工作的,但其实时CPU在底部进行不断地切换,只是切换的时间比较短,所以我们认为是同时进行的。

  • 为什么我们要使用多线程
    提高程序的运行效率。(但是多线程也不是越多越好,比较占用内存)

  • 多线程的应用场景
    迅雷多线程下载、数据库连接池、分批发送短信。

  • 多线程的创建方式
    继承Thread类、实现Runable接口、匿名内部类、线程池创建。

  • 同步和异步的概念
    同步就是一条执行路径,从上往下执行。
    异步就是有不同的线程去完成不同的执行路径,互相不影响。

  • 多线程的几种状态
    准备、就绪、运行、阻塞、死亡。

Java高阶培训_视频笔记(1)_并发基础_并发基础

  • 用户线程与守护线程
    守护线程是所有的用户线程销毁只后就会自动销毁,最有名的守护线程就是GC线程。设置守护线程的方法是线程.setDameon(true);,但必须在启动线程之前设置,否则会报出异常。

  • join方法
    A线程正在执行,在A线程中调用了B线程的join方法,那么A线程会进入阻塞的状态(释放CPU执行权),等待B线程执行完毕之后在执行。但是调用join方法之前,线程必须也调用过启动的方法。
    引申出的经典面试题:如何让A\B\C三个线程按照顺序执行。

public static void main(String[] args) {

        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("t1 : " + i);
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("t2 : " + i);
            }
        });

        Thread t3 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("t3 : " + i);
            }
        });

        try {
            t1.start();
            t1.join();
            t2.start();
            t2.join();
            t3.start();
            t3.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }