Java多线程编程
intimexy
这个作者很懒,什么都没留下…
展开
-
死锁面试题(什么是死锁,产生死锁的原因及必要条件)
什么是死锁? 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示: 产生死锁的原因? 可归结为如下两点: a. 竞争资源 系统中的资源可以分为两类:可剥夺资源,是指某进程在...转载 2020-10-25 18:16:39 · 253 阅读 · 0 评论 -
(3.3)ThreadLocal面试常见问题
面试官:有如下场景:在多线程并发情况下,有一个共享变量,不同线程设置不同值后,各线程只想获取自己设置的值,如何实现? 小小白:使用ThreadLocal,通过ThreadLocal实例对象的set方法设置各线程自己的值,通过ThreadLocal实例对象的get方法获取各线程自己设置的值。 面试官:写一下简单的实现代码? 小小白:噼里啪啦写了如下代码。 public static void main(...转载 2020-10-15 19:04:46 · 307 阅读 · 0 评论 -
(3.2)ThreadLocal的作用、应用场景,原理
ThreadLocal作用、场景、原理1.ThreadLocal 是什么?在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。在JDK5.0中,ThreadLocal已经支持泛型,该类的类名已经变为ThreadLoca转载 2020-10-15 19:01:15 · 312 阅读 · 0 评论 -
(3.1)线程本地ThreadLocal的介绍与使用
Java多线程编程-(1)-线程安全和锁Synchronized概念Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 ThreadLocal简介 我们通过上两篇的学习,我们已经知道了变量值的共享可以使用public static变量的形式,所有的线程都使用同一个被public static修饰的变量。 那么如果我们想实现每一个线程都有自己的共享变量该如何解决哪?JDK提供的ThreadLocal正是为了解决这样的问题的。 类ThreadLocal主要解决的就是每个线程转载 2020-10-15 18:45:45 · 76 阅读 · 0 评论 -
(2)可重入锁以及Synchronized的其他基本特性
上一篇基本介绍了进程和线程的区别、实现多线程的两种方式、线程安全的概念以及如何使用Synchronized实现线程安全,下边介绍一下关于Synchronized的其他基本特性。 一、Synchronized锁重入 (1)关键字Synchronized拥有锁重入的功能,也就是在使用Synchronized的时候,当一个线程得到一个对象的锁后,在该锁里执行代码的时候可以再次请求该对象的锁时可以再次得到该对象的锁。 (2)也就是说,当线程请求一个由其它线程持有的对象锁时,该线程会阻塞,而当线程请求由自己持有转载 2020-10-14 18:07:54 · 105 阅读 · 0 评论 -
(1)线程安全和锁Synchronized概念
##一、进程与线程的概念 ##(1)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。 在未配置 OS 的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完后,才允许另一个程序执行;在多道程序环境下,则允许多个程序并发执行。程序的这两种执行方式间有着显著的不同。也正是程序并发执行时的这种特征,才导致了在操作系统中引入进程的概念。 自从在 20 世纪 60 年代人们提出了进程的概念后,在 OS 中一直都是以进程作为能拥有资源和独立运行的基本单位的。直到 20 世纪转载 2020-10-14 18:03:17 · 76 阅读 · 0 评论