今天抽空主要看了一下mysql线程池(cached threads)的实现原理,总体并不那么复杂,也学到了一些设计原理,值得记录一下。为了简化代码,让思路更清晰,我删去了不少错误处理,线程同步锁的代码,mysql中大量使用全局变量,这些都需要锁了控制访问。 先大致说一下几个关键的东西: 1、List ...
分类:
数据库 时间:
2017-05-08 01:17:12
阅读次数:
307
在一个方法内部使用如下代码: 等同于如下代码: 以上两种情况是全局所有实例对象共用一个同步锁; 而如下两组代码则是每个实例对象使用单独的同步锁,如下: ...
分类:
其他好文 时间:
2017-05-07 13:57:59
阅读次数:
150
主要分析 List Map Set 中的 并发集合。 默认基于1.6分析 1 CopyOnWriteArrayList juc包下的类; 该类是支持随机访问的List, 和Vector(同步锁实现线程安全)和ArrayList(非线程安全)对照。 1.1 属性 transient final Ree... ...
分类:
其他好文 时间:
2017-05-06 17:57:36
阅读次数:
276
在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。
分类:
编程语言 时间:
2017-05-04 14:49:07
阅读次数:
245
看了一堆文章,终于把Java CAS的原理深入分析清楚了。 感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档: http://www.blogjava.NET/xylz/archive/2010/07/04/325206.html http://blog.hesey.N ...
分类:
编程语言 时间:
2017-04-29 17:35:52
阅读次数:
260
1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一、 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同份资源不共享 B implements Runnable:( 推荐) )多个线程共享一个目标资源,适 ...
分类:
编程语言 时间:
2017-04-28 10:23:05
阅读次数:
232
1、创建多线程方式继承Thread类 2、实现多线程第二种方式Runnable接口 3、多线程中的同步代码块、同步函数、静态同步函数需要注意的事项 当函数名用static修饰时,同步锁不能用this,static函数的锁使用对象.getClass()获取的字节码文件或者类名.class获取; ...
分类:
编程语言 时间:
2017-04-09 00:12:11
阅读次数:
256
线程释义 使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。 一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。 Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程 ...
分类:
编程语言 时间:
2017-04-05 00:50:21
阅读次数:
214
一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的 ...
分类:
编程语言 时间:
2017-04-02 19:59:14
阅读次数:
177
摘录:http://www.blogjava.net/mstar/archive/2013/04/24/398351.html CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁 ...
分类:
编程语言 时间:
2017-03-25 23:56:00
阅读次数:
287