`
hyxw5890
  • 浏览: 35604 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
ReentrantLock可以等同于synchronized使用、但是它比synchronized有更强的功能、可以提供更灵活的锁机制、同时减少死锁的发生概率。我们平时用用synchronized也就够了、但是要写好一个复杂的多线程系统、为了提供更灵活的同步机制、就需要用到ReentrantLock了。 ReentrantLock相比synchronized多了以下一些特性: 1、synchronized关键字只能支持单条件(condition)、比如10个线程都在等待synchronized块锁定的资源、如果一直锁定、则其他线程都得不到释放从而引起死锁;而同样的情况使用ReentrantL ...
以前在学操作系统时就接触过信号量(Semaphore['seməfɔ:])的概念,指的是多线程环境下保证一个或多个关键代码段不被并发调用。 举一个简单的例子可以帮助理解:比如车库的容量是有限的、同一时刻只能停100辆车、超过了100辆、其他的车辆就只能等待了。 在Jdk的java.util.concurrent包中已经实现了一个Semaphore类、我们可以直接拿来用、不需要再重复制造轮子了。 该类有如下一些特点: 1、Semaphore是带有Counting、相当于维护了一定数量的通行证、如上面举的例子里面的100辆车 2、该类的acquire方法是为了申请通行证的、该方法可能会Bloc ...
   今天看到了一则新闻《干扰演讲学生道歉 温家宝希望剑桥让其继续学习》,对总理的宽大胸怀表示敬佩的同时不禁鄙视该学生的无知,你扔谁也不该扔一个跑过2000多个农村,连续多年和人民一起过年,地震发生后第一时间赶到现场的人。不过在看了有些网友具有中国特色的留言后却令人感到哭笑不得。下面摘录几篇:    引用这是怎么回事?人家也没说要开除那个学生啊~! 剑桥大学的党委书记严重失职啊 引用俺是个大老粗,不懂啥政治外交的,俺寻思着吧,他扔咱总理破谢,咱就应该打回去,俺觉着吧那大学生一点都不体面,不识大体!俺们乡长下来讲话的时候俺们那村都没一个那样的 !俺觉着吧,俺村人比那名牌大学的某些学生咱有觉悟,识大 ...
    我们在使用Java的枚举时往往会结合Switch来进行判断以实现不同值的处理,但是我们知道多用switch不是一种很好的代码风格,不利用维护和适应变化,因为这不符合开-闭原则。为此一种方法是用策略模式来重构原有的枚举实现,但是很多时候确实需要用枚举的方法来实现,如一周的天数等等,这也是JDK5.0重新引入枚举的原因。Joshua Bloch在Effective Java(第二版)里提出了一种枚举策略模式 很好的解决了这个问题。     要说明问题最好的办法就是结合例子,比如我们要定义一年的12个月,往往会想到枚举,假设我们要定义一个返回某年某个月的天数的方法,我们知道一个月一般是30, ...
无聊写了一个实现文件-文件,文件夹-文件夹(包括源文件夹所有文件),文件-文件夹的拷贝的实用类. import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; public class Util { public static int buffer_size ...
   SOA是一个对应于大型分布式系统的概念。要理解SOA,必须首先理解大型分布式系统的特性。     首先,大型系统必须面对“遗留资产”的问题。你不太可能一切从头开始设计的时候引入SOA的理念。你不得不面对大多数现在正在使用的系统今后仍将保留这一现实。这也意味着实施SOA并不等于从头开始设计一个新系统,而是改变现有系统的架构,解决旧平台的整合和向后兼容的问题。事实上,实现SOA是为了更好的维护大型系统。      从本质上来说,所有的大型系统都是混杂的。这些系统往往有不同的目的,实施时间,你会发现整个系统架构夹杂着不同的平台,编程语言,编程范式,甚至是中间件。在过去,已经有许多整合的手段试 ...
Global site tag (gtag.js) - Google Analytics