Java线程概述

首先我们要知道进程和线程的区别:
进程:进程就是在操作系统中运行的程序。
线程:线程就是进程的一个执行单元, 或者一条执行路径。
举个例子:启动迅雷应用程序,就是打开一个进程, 在该软件中可以同时下载多部电影, 每部电影的下载就是一个线程。一个进程至少有一个线程, 如果这个进程有多个线程,称该进程为多线程应用程序。
进程中的多个线程是相互独立的,每个线程都有它自己的线程栈。如下图

主线程:JVM启动主线程,主线程运行main方法
用户线程:用户开启的新的线程, 也称子线程
守护线程:守护线程是为其他线程提供服务的线程,也叫后台线程. JVM中垃圾回收器就是一个守护线程。守护线程不能单独运行, 当JVM中只有守护线程时, JVM会退出。
Java创建线程的方式有三种:Java创建线程依赖java.lang.Thread类
1.定义Thread类子类



image.png

2.定义Runnable接口的实现类
image.png
3.定义Callable接口的实现类
image.png
线程生命周期:

线程安全问题:在多线程程序中,当多个线程同时操作堆区/方法区同一个数据时,可能引发数据不一致的现象, 称为线程安全问题。
线程同步语法:
image.png
工作原理:1.线程要执行同步代码块,必须先获取锁对象
2.任意对象都可以作为锁对象,任意对象都有一个内置锁
3.一个锁对象最多被一个线程持有
4.线程持有了锁对象后,会一直持有,直到执行完同步代码块后才会释放锁对象
同步代码块:同步代码块要想实现同步,必须保证使用同一个锁对象,只要使用了同一个锁对象的同步代码块就可以同步。

暂无评论