线程和进程

Posted 秋水潺流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程和进程相关的知识,希望对你有一定的参考价值。

今天看了几个关于线程和进程的视频,不是很理解,这里做一下重点知识的整理,方便后续复习和理解

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学习宝典(书籍)

 

以上是关于线程和进程的主要内容,如果未能解决你的问题,请参考以下文章

进程和线程单线程多线程和多进程

进程和线程,线程安全,python如何实现多进程,多线程

进程与线程的问题

多线程和多进程模式有啥区别

什么是并发和并行?什么是进程和线程?进程和线程的区别

进程和线程的区别和联系