自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

转载 【Java多线程与并发库】12.java5的Semaphere同步工具

Semaphore(信号灯) (1)概念 Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以 控制同时访问资源的线程个数,例如实现一个文件允许的并发访问数。 Semaphore实现的功能就类似于餐厅有5个座位,假如有10人要就餐,但同时只能 有5个人能够坐下,当5个人的任何一个人让开后,其中在等待的另外5个人中又有 一个人可以坐下了。

2016-11-20 20:10:57 139

转载 【Java多线程与并发库】11.java5条件阻塞Condition的应用

Condition (1)概述 Condition是Java有关锁的包下面的一个类,锁我们只能实现互斥,不能实现通知。而Condition就是解决这个问题,Condition的功能类似在传统线程技术中的Object.wait和Object.notify的功能。 (2)实例 记得我们之前写过的一个例子,一道面试题: 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10

2016-11-20 20:08:33 131

转载 【Java多线程与并发库】10.java5的线程锁(读写锁)技术

Lock&Condition实现线程同步通信 (1)Lock概念 Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似, 锁本身也是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们 必须用同一个Lock对象。锁是加在代表要操作的资源的类的内部方法中,而不是 线程代码中! 例子: package cn.edu.hpu.test; 

2016-11-20 20:05:42 148

转载 【Java多线程与并发库】9.Callable与Future的应用

Callable&Future 它们的作用是,我们启动一个线程,线程结束的时候会返回一个结果, 我们可以通过Callable启动一个带返回数据的线程, 通过Future获取线程返回的结果。 例子: package cn.edu.hpu.test;      import java.util.concurrent.Callable;  import java.util.co

2016-11-20 20:01:43 123

转载 关于垂直切分Vertical Sharding的粒度

垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响. 关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越大,但单表的路由会越简单,与业务的关联性会越小,就越容易使用统一机制处理.在此方向上的极端方案是:打断所有连接,每张表都配有路由规则,可以使用统一机制或框架自动处理.比如amoeba

2016-11-06 10:35:52 123

转载 数据库Sharding的基本思想和切分策略

一、基本思想       Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切

2016-11-06 10:35:01 107

转载 【Java多线程与并发库】8.java5线程并发库之线程池的应用

Java5中的线程的并发库 并发库的代码均在Java的java.util.concurrent包下: 并发库中最常用的,是“线程池” (1)线程池出现的原因 什么是“线程池”呢?用“线程池”有什么好处呢? 首先我们来举个例子。 假设我们想写一个类似TomCat的服务器,其实是很难的, 难点在于我们的性能升不上去。 假设我们写好了这个伪TomCat,假设有一个

2016-10-30 15:31:59 273

转载 【Java多线程与并发库】7.多个线程之间共享数据的方式探讨

多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个 Runnable对象中有一个共享数据,例如售票系统就可以这么做这么做。 2.如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有 如下两种方式来实现这些Runnable对象之间的数据共享: (1)将数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runn

2016-10-30 15:30:22 255

转载 【Java多线程与并发库】6.ThreadLocal类及应用技巧

之前我们了解了实现线程范围内数据共享的机制,接下来我们 可以使用JDK5提供的ThreadLocal类,来实现线程范围内数据共享。 ThreadLocal类其实就类似于我们上一次创建的Map。 我们创建一个测试类,来使用ThreadLocal类实现线程范围内数据共享: 我们的类A和类B每次都从线程中获取data值打印,为了保证每次打印的数据是该线程的数据, 类A和类B的数据都从T

2016-10-24 14:15:30 135

转载 【Java多线程与并发库】5.线程范围内共享变量的概念与作用

我们可以使用ThreadLocal实现线程范围的共享变量。 ThreadLocal的作用和目的,用于实现线程内的数据共享,即对于相同的程序代码,多个模块在 同一个线程中运行时要共享一份数据,而在另外线程中运行又共享另外一份数据。 线程范围内共享数据的示意图: 每个线程调用全局ThreadLocal对象的set方法,对相当于往其内部的map中增加一条记录,key 分别是各自

2016-10-24 14:13:35 183

转载 【Java多线程与并发库】4.传统线程同步通信技术

我们先通过一道面试题来了解传统的线程同步通信。 题目: 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次, 接着再回到主线程又循环100次,如此循环50次,请写出程序。 我没有看答案,先用自己的思路写了一段代码,有一些是借鉴传统的“生产者与消费者”的 多线程模型写出来的: package cn.edu.hpu.test;      /** 

2016-10-17 21:23:53 199

转载 【Java多线程与并发库】3.传统线程互斥技术

线程的同步互斥与通信 互斥的问题在使用线程的时候是我们必须要注意的。 例如两个线程同时开启,由于业务规则,需要访问同一个对象,要取得该对象 中的数据进行修改。 这样多个线程对同一个数据进行操作的实例有很多,例如银行交易。我们的账户中原来 有2000元,在同一时间,我们刷卡200购物,然后有人给我们转账500元,我们的账户余额 应该是2000-200+500=2300元。 但是,在类似

2016-10-17 21:20:37 99

转载 【Java多线程与并发库】2.传统定时器技术回顾

Java中的Timer类(java.util.Timer),是最常用的定时类,它可以在隔一段时间之后 再去执行其run方法中设置的代码语句。 使用Timer类定时执行程序有三种方法: (1)单次定时 new Timer().schedule(task, time); 给Timer类的schedule方法中传入一个TimerTask对象,并重写Task对象的run方法, 将需要定时执

2016-10-17 18:14:27 128

转载 【Java多线程与并发库】1.传统线程技术回顾

创建线程的两种传统方式 (1)创建Thread的子类,重写run方法 在Thread子类覆盖的run方法中编写运行代码。 package cn.edu.hpu.test;      public class ThreadTests {       public static void main(String[] args) {           new Thread()

2016-10-17 18:10:39 292

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除