摘要: 一、ThreadLocal源码剖析 ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样 阅读全文
posted @ 2020-03-30 14:42 慎终若始 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 一、懒汉式单例多线程模式 1、创建模拟的servlet生成器 package cn.bjsxt.sing; import java.util.UUID; public class LszySingleton { //servlet不建议使用成员变量 // 给当前的servlet定义成员变量 // S 阅读全文
posted @ 2020-03-30 14:37 慎终若始 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 前言 死锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可能要执行数十亿次获取锁->释放锁的操作,只要在这数十亿次操作中只要有一次发生了错误,就可能导致程序中发生死锁,并且即使通过压力测试也不可能找出所有潜 阅读全文
posted @ 2020-03-30 10:41 慎终若始 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: public class ThreadDomain25 { public synchronized static 阅读全文
posted @ 2020-03-30 10:39 慎终若始 阅读(145) 评论(0) 推荐(0) 编辑
摘要: synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchronized同步语句块来解决问题。看一下例子: public class ThreadD 阅读全文
posted @ 2020-03-30 10:35 慎终若始 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 前言 1、理解同步关键词synchronized 2、同步方法与同步代码块的区别 3、理解锁的对象this 脏读 一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。 多线程 阅读全文
posted @ 2020-03-30 10:33 慎终若始 阅读(193) 评论(0) 推荐(0) 编辑