导读:
本篇是JAVA基础系列的第17篇,今天我们梳理java 多线程的相关知识点。多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的。而且线程是很多知识点的基础,例如我们之前在学习字符串操作类时,StringBuffer类就是线程安全。
1.线程与进程
-
进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同 时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序 即是一个进程从创建、运行到消亡的过程。
-
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
-
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
2.线程与进程区别
-
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。
-
线程是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。
-
一个程序至少有一个进程,一个进程至少有一个线程.
-
线程的划分尺度小于进程,使得多线程程序的并发性高。
-
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
-
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
-
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别
3.并发与并行
-
并发是指同一个时间段内多个任务同时都在执行,并且都没有执行结束。并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行。
-
并行是说在单位时间内多个任务同时在执行 。
在多线程编程实践中,线程的个数往往多于CPU的个数,所以一般都称多线程并发编程而不是多线程并行编程。
4.java中线程的创建方式
Java 提供了三种创建线程的方法:
-
通过实现 Runnable 接口;
-
通过继承 Thread 类本身;
-
通过 Callable 和 Future 创建线程。
实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。
5.通过实现 Runnable 接口来创建线程
创建一个线程,最简单的方法是创建一个实现 Runnable 接口的类,需要重写run方法。
通过 Thread 调用 start() 方法来启动线程。
public class MyRunnable implements Runnable {
public void run() {
// ...
}
public static void main(String[] args) {
MyRunnable instance = new MyRunnable();
Thread thread = new Thread(instance);

本文深入探讨了Java中的线程基础知识,包括线程与进程的区别、并发与并行的概念,以及Java创建线程的三种方式:实现Runnable接口、继承Thread类和使用Callable与Future。此外,还详细介绍了Thread类的关键方法和线程的生命周期状态。

4533

被折叠的 条评论
为什么被折叠?



