- 博客(12)
- 问答 (2)
- 收藏
- 关注
原创 AQS之acquire详解
同步器之acquire:public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); }先获取同步状态,获取成功方法就结束了
2018-01-22 16:01:08 2474 1
原创 JMM内存屏障
LL: load1 LoadLoad load2:禁止load1才做和load2操作重排序SS:store1 Store Store store2;禁止store1才做和store2操作重排序SL:store1 Store Load load2:LS:loan1 Load Store store--------------------------------------------
2018-01-05 14:10:43 614
原创 锁
1锁粗化:为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽量的短。只有这样,等待在这个锁的其他线程才能尽早的获取公共资源执行任务。但是频繁的对同一个锁不断的请求,同步 和释放也是很消耗资源的。这样性能反而会下降。因此,虚拟机在遇到连续对锁的请求的时候,会把多次请求合并和一次请求,从而减少对锁的请求同步次数,这叫做锁粗化。例如在循环体内用了sync关键字。2自旋锁:在并发时,不断的挂起和
2017-11-30 16:37:38 309
原创 多线程
避免死锁1.避免一个线程内同时获取多个锁2.避免一个线程在锁内同事占用多个资源,尽量保证每个锁只占用一个资源3.尝试使用定时锁,使用 lock.tryLock()来代替内部锁机制4.对于数据库锁,加锁和解锁必须在一个数据库连接里如何减少上下文切换:1.无锁的编发编程,多线程竞争锁的时候会引起上下文的切换,所以多线程处理数据时可以用一些办法来避免使用锁,比
2017-04-10 17:59:13 228
原创 单例模式线程安全例子
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static fin
2017-02-17 11:20:13 207
转载 java堆栈
Java堆、栈和常量池以及相关String的详细讲解(经典中的经典) 博客分类: Java综合 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。
2017-02-17 11:04:16 286
原创 JVM
两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法 标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
2016-08-23 11:29:23 185
转载 JAVA Reflect
在Java运行时环境中,对于任意一个类,能否知道这个类的哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制。反射给java提供了,运行时获取一个类实例的可能,这一点非常灵活,你仅仅传一个类的全限定名,就能通过反射,来获取对应的类实例,我们一般会用Class类,来调用这个被
2016-08-19 14:32:12 278
转载 SpringMVC @ModelAttribute
@ModelAttribute使用详解1.@ModelAttribute注释方法 @ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。 (1)@ModelAttribute注释void返回值的方法 @Controller
2016-08-19 13:23:24 191
转载 Controller与Controller之间跳转
一个controller跳转到另一个controller 方式一:使用ModelAndView return new ModelAndView("redirect:/list"); 这样可以重定向到toList这个方法 方式二:返回String return "redirect:/ toList "; 其它方式:response.sen
2016-08-08 10:23:32 2961
原创 JSP自定义标签
JSP自定义标签:编写标签对应的实现类时,需要重载BodyTagSupport类的方法:doStartTag(), doEndTag()。 自定义标签的步骤:(1)第一步:开发标签实现类。(2)第二步:编写标签描述tld文件,并将tld文件放于当前应用的/WEB-INF目录下。(3)在JSP页面中声明并调用标签。 第一步:即编写Java代码,编写标签对应的实现类时,
2015-03-15 21:29:57 260
空空如也
concurrentHashMap 构造方法
2017-08-28
maven创建的SSM启动成功之后预览JSP页面报错
2015-12-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人