"本文参考引用,本人整理个人理解。地址点击" 1.实现原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。 下面是一些同步的基础 1. 普通同步方法,锁是当前实例对象; 2. 静态同步方法,锁是当前类的class对 ...
分类:
其他好文 时间:
2018-08-23 16:50:59
阅读次数:
1485
一、引言在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。而从JDK1.5以后java界的一位大神—— Doug Lea 开发了AbstractQueuedSynchro ...
分类:
编程语言 时间:
2018-08-11 22:03:43
阅读次数:
180
1.Java内存模型(Java Memory Model,JMM) 2.JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory)。 本地内存中存储了该线程以读/写共享变量的副本,本地内存是JMM的一 ...
分类:
编程语言 时间:
2018-08-10 01:30:58
阅读次数:
162
volatile的应用 在多线程并发编程中synchronized和volatile都扮演者重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。 可见性的意思是当一个线程修改一个共享变量时,另外的线程能读到这个修改的值。 如果volatile ...
分类:
其他好文 时间:
2018-08-09 19:22:22
阅读次数:
123
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程 ...
分类:
编程语言 时间:
2018-08-08 18:19:17
阅读次数:
184
在web开发中,数据库操作是非常频繁的,弄一个好用的工具类就显得很有必要了,如下图是工具类的结构: 我是通过新建SqlHelper,通过有参构造得到一个数据库连接的(由数据库连接池派发),这样可以避免共享变量从而产生线程问题。 两个方法(一个Update,一个Query): 通过可变参数,直接传入数 ...
分类:
数据库 时间:
2018-08-08 17:34:39
阅读次数:
148
问答形式总结: 1、 ThreadLocal类的作用 ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。 ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,re ...
分类:
编程语言 时间:
2018-08-05 23:23:38
阅读次数:
240
面向对象高级: 修饰符: static:①可修饰变量(属性);②可修饰方法;③可修饰代码块。 Static int data语句说明data为类变量,为一个类的共享变量,属于整个类。 Int data为实例变量。 例: static int data; m1.data=0; m1.data++的结果 ...
分类:
其他好文 时间:
2018-08-04 18:58:33
阅读次数:
197
前言 在高并发的应用当中,最关键的问题就是对共享变量的安全访问,通常我们都是通过加锁的方式,比如说synchronized、Lock来保证原子性,或者在某些应用当中,用voliate来保证变量的可见性,还有就是通过TheadLocal将变量copy一份,称为局部变量(线程私有)等等。现在我们学习一种 ...
分类:
编程语言 时间:
2018-08-04 13:38:16
阅读次数:
203