今天看了几个关于线程和进程的视频,不是很理解,这里作一下重点知识的整理,方便后续复习和理解java
1.简单的概念理解:程序员
1)进程:一个执行中的程序,每个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;多线程
2)线程:进程中一个独立的控制单元,线程在控制着进程的执行,一个进程中至少要有一个线程(书上的概念:是进程的一个实体,是被独立调度和分配的基本单位);并发
2.多线程的实现:函数
在java中对于多线程实现必定要有一个线程主类,这个线程主类的要求是:学习
1)继承Thread父类;操作系统
2)实现Runnable接口;线程
3.继承Thread类实现多线程(在java.lang包里面的Thread类):视频
1)步骤(全部的线程都是交替执行,自己没有固定的执行顺序):继承
>>定义类继承Thread;
>>复写Thread类中的run方法;
>>调用线程中的start()方法(该方法的两个做用:启动线程,调用run方法);
注解:为什么要调用start()方法而不能够直接调用run()方法,由于全部的多线程的执行必定是并发的,在同一个时间段上会有多个线程交替执行,因此为了达到目的,绝对不可以直接调用run()方法,而是应该调用Thread类中的start()方法启动多线程;
注解:在调用start()方法里面发现有调用start0()方法,而start0()方法使用了native关键字定义,这个关键字调用本机的操做系统函数,因为线程的启动须要牵扯到操做系统中资源的分配,因此具体的线程启动须要根据不一样的操做系统的实现,而JVM至关于根据系统中定义的start0()方法来根据不一样的操做系统进行该方法的实现。(有点绕,很差理解)
4.实现Runnable接口:
是函数式的接口(@FunctionalInterface),能够利用Lamda表达式完成。(不知道是什么鬼?)
Thread类的构造方法:public Thread(Runnable target),因此能够根据new Thread(mt1).start() 来调用start()函数,从而启动多线程。
学习视频:黑马程序员_毕向东_Java基础视频教程;极限程序员java入门到精通;java学习宝典(书籍)