Java中各种锁的详解

Java中多种锁的实现详解

1、synchronized和Lock

java中有两种锁的加锁方式:一种是用于synchronized关键字,另一种是用Lock接口实现类

形象地说,synchronized关键字是自动挡,可以满足一切日常驾驶需求。但是如果你想要玩其他的骚操作,就需要手动挡—各种Lock实现类

所以如果你只是想要简单的加个锁,对性能也没有什么特别的要求,用synchronized关键字就足够了。自从Java 5 之后,才在java.util.concurrent.locks包下有了另一种方式来实现锁那就是Lock。也就是说,synchronized是Java语言内置的关键字,而Lock是一个接口,这个接口的实现类在代码层面实现了锁的功能,具体实现有兴趣可以自己研究一下哦。

Java

JUC并发编程

1、线程和进程

进程:程序的集合。一个进程往往可以包含多个线程,至少包含一个

java默认有两个线程:一个main线程,一个gc线程

线程:线程是cpu调度和执行的单位,对于java而言:Thread、Runnable、Callable

Java

多线程详解

Process与Thread

  • 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念

  • 而进程则是程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位

  • 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是cpu调度和执行的单位。

    注意:很多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。

Java