java
文章平均质量分 77
woshinnishile
这个作者很懒,什么都没留下…
展开
-
java多线程(一)
很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先建立一个数据字典,以免产生误会。多线程:指的是这个程序(一个进程)运行时产生了不止一个线程并行与并发:并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我...原创 2017-07-03 23:17:50 · 80 阅读 · 0 评论 -
设计模式(四)
[size=large][color=black][b]13.访问者模式[/b][/color][/size]访问者模式也称为Visitor模式,使用这种模式后可以在不修改已有程序结构的前提下,通过额外添加“访问者”来对已有代码的功能实现提升。表示一个作用于某对象结构中的各元素的操作。它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。构成访问者模式的角色如下:1...原创 2017-07-30 18:30:36 · 121 阅读 · 0 评论 -
java多线程模式(一)
[size=large][color=black][b]1.Immutable Object (不可变对象) 模式[/b][/color][/size]多线程共享变量的情况下,为了保证数据一致性,往往需要对这些变量的访问进行加锁。而锁本身又会带来一些问题和开销。Immutable Object模式使得我们可以在不使用锁的情况下,既保证共享变量访问的线程安全,又能避免引入锁可能带来的问题和开...原创 2017-07-18 22:00:29 · 316 阅读 · 0 评论 -
java多线程(八)
[color=black][size=medium][b]14、对象锁[/b][/size][/color]1. 对象锁 所有对象都自动含有单一的锁。 JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相同的任务(线程)在此对象上获得锁时,计数会递增。 只有首先获得锁的任务(线程...原创 2017-07-13 22:54:37 · 188 阅读 · 0 评论 -
java多线程(七)
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。13、偏向锁和轻量级锁、锁粗化、锁消除、锁膨胀因为这几个概念连续非常紧密所以放在一起会方便理解记忆。在jdk1.6中对锁的实现引入了大量的优化,如锁粗化(Lock Coarsening)、...原创 2017-07-12 23:54:53 · 110 阅读 · 0 评论 -
java多线程(六)
9、悲观锁 悲观锁,就是不管是否发生多线程冲突,只要存在这种可能,就每次访问都加锁,加锁就会导致锁之间的争夺,有争夺就会有输赢,输者等待。 syncrhoized是一种独占锁,即:占用该锁的线程才可以执行,申请该锁的线程就只能挂起等待,直到占用锁的线程释放锁才唤醒,拿到锁并执行。由于在进程挂起和恢复执行过程中存在着很大的开销,并且当一个线程正在等待锁时,它不能做...原创 2017-07-11 23:32:24 · 72 阅读 · 0 评论 -
java多线程(五)
5、读写锁相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-读能共存,读-写不能共存,写-...原创 2017-07-09 20:25:29 · 134 阅读 · 0 评论 -
java多线程(四)
锁java 多线程的锁我是感觉是一个非常有难度的知识点,多线程的锁有十几种,以前我在面试的时候就有面试官问过我了不了解多线程锁,我当时想锁有什么难的啊,不就常用的那几种嘛,结果我直接就回到深入研究过,然后这次面试结果也就可想而知了!当一个技术让你觉得的它特别难的时候这个时候不要怀疑自己的智商,大多数人智商都处于一个水平线,大多数时候都是出于对未知问题的恐惧!其实我们只要一步一步来慢慢的一点...原创 2017-07-09 16:13:18 · 137 阅读 · 0 评论 -
java多线程(三)
线程状态转化图[img]http://dl2.iteye.com/upload/attachment/0125/8008/d4811fc5-e155-3be6-b55a-2b7e3c4e568f.jpg[/img]这个图我觉得应该是市面比较通俗易懂的多线程状态转换图,wait()和sleep()的区别显而易见,wait会释放锁然后等待notify()、notifyAll()才会...原创 2017-07-08 23:30:16 · 98 阅读 · 0 评论 -
java多线程(二)
上节说到final、volatile、synchronized这三个关键字,个人感觉这三个关键字应该是在多线程中使用的非常频繁的,并且也是最基础的实现多线程时会用到的技术。所以下面来详细的详解下这三个关键字到底能在多线程的情景下做些什么事情!synchronized:Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 ...原创 2017-07-03 23:18:08 · 80 阅读 · 0 评论 -
java源码学习(一)
AtomicBoolean源码分析Java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;2、可以定位对象某字段的内存位置,也可以修改对象的字段值,即使它是私有的;3、挂起与恢复4、CAS操作:是通过compareAndSwapXXX方法实现的详细...原创 2017-08-07 22:07:17 · 143 阅读 · 0 评论