java多线程概述

时间:2022-01-23 17:30:36

不懂多线程就等同于不懂java。

JVM线程分类

jvm线程分为守护线程和用户线程。守护线程的定位是为用户线程提供服务。当所有用户线程结束后,jvm随机退出。你可以调用setDeamon将线程指定为守护线程。
JVM启动时第一个进行的用户线程是主线程。一般认为主线程应该最后一个结束。

JVM多线程框架

原始

Thread类的相关使用

Executor

#

JAVA中锁的分类

公平锁,非公平锁
公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。

可重入锁,不可重入锁
可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。
在JAVA环境下 ReentrantLock 和synchronized 都是可重入锁

独享锁/共享锁
独享锁是指该锁一次只能被一个线程所持有。如ReentrantLock,ReadWriteLock的写锁。
共享锁是指该锁可被多个线程所持有。如ReadWriteLock中的读锁。

自旋锁
在Java中,自旋锁是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁

无状态锁,偏向锁,轻量级锁和重量级锁状态
java 6中引入的锁的四种状态。