死锁产生的条件及解决

死锁产生的条件

  • 互斥
    线程对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个线程所占有。
    此时若有其他线程请求该资源,则请求线程只能阻塞等待。
阅读更多

如何理解线程安全

线程安全问题都是由全局变量及静态变量引起的。

JVM运行时数据区包括了程序计数器,本地方法栈,jvm栈,堆。在这四个区中,前三个都是线程间隔离的。
只有堆内存是线程间共享的。而全局变量放在堆内存中,各线程内jvm栈只保存了对象引用,所以各线程更改的还是一个
内存地址的数据。

阅读更多

ThreadLocal的使用与源码

使用

当有一个单例类中有实例变量,而业务逻辑又要对变量进行处理,当有多个线程同时操作时,如果没有给处理代码加上锁,就有可能出现线程安全问题。如:我们最常见的获取JDBC连接的
连接,还有我们交给Spring容器管理的类等

阅读更多

阿里云服务器中安装Maven

准备工作

  • 下载maven包 apache-maven-3.5.3-bin.tar.gz
  • 将下载包放到ubantu上 (本文放在/usr/maven中)
  • 解压下载包 tar -zxvf apache-maven-3.5.3-bin.tar.gz
阅读更多

阿里云服务器中安装Java

准备工作

  • 下载jdk包 jdk-8u152-linux-x64.tar.gz
  • 将下载包放到服务器上 (本文放在/usr/java中)
  • 解压下载包 tar -zxvf jdk-8u152-linux-x64.tar.gz
阅读更多

ConcurrentHashMap

JDK1.8之前ConcurrentHashMap

  • concurrentHashMap在JDK1.5出现的,为了解决HashMap线程不安全问题和Hashtable使用synchronized导致并发性能低问题。
阅读更多