摘要: 一、Semaphore介绍 Semaphore意思为信号量,是用来控制同时访问特定资源的线程数数量。它的本质上其实也是一个共享锁。Semaphore可以用于做流量控制,特别是公用资源有限的应用场景。例如:某个停车场车位只有10个,一开始停车场没有车辆所有车位全部空着,然后先后到来八辆车,停车场车位够 阅读全文
posted @ 2018-05-18 10:36 数月亮 阅读(798) 评论(0) 推荐(0) 编辑
摘要: 一、CyclicBarrier工具类介绍 在上一篇文中我们介绍到了CountDownLatch工具类,其实CyclicBarrier和CountDownLatch工具类实现的功能差不多。我们可以从字面上理解CyclicBarrier意思就是可以循环使用的屏障。该工具类可以做到让一组线程到达一个屏障点的时候被阻塞,直到最后一个线程到达才开启屏障,继续往下执行。Cyclic... 阅读全文
posted @ 2018-05-16 08:22 数月亮 阅读(1115) 评论(0) 推荐(0) 编辑
摘要: 一、CountDownLatch工具类介绍 CountDownLatch类是Java并发工具常用的四大工具之一,CountDownLatch允许一个或者多个线程等待其他线程完成工作。假设我们有这样的一个需求,我们需要解析一个Excel里多个sheet的据,这个时候我们考虑使用多 线程同时进行工作,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程... 阅读全文
posted @ 2018-05-15 20:53 数月亮 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的。Object和Condition接口的一些对比。摘自《Java并发编程的艺术... 阅读全文
posted @ 2018-05-15 07:11 数月亮 阅读(39523) 评论(1) 推荐(5) 编辑
摘要: 上篇文章简单的介绍了ReentrantLock可重入锁。事实上我们可以理解可重入锁是一种排他锁,排他锁在同一个时刻只能够由一个线程进行访问。这就与我们实际使用过程中有点不想符合了,比如说当我们进行读写文件操作的时候,我们可能允许多个线程进行读文件操作,而对写文件只需要控制一个线程既可以。在这种业务情况下如果使用排他锁,可能不太符合而且效率也可能有些低下。 一、Reen... 阅读全文
posted @ 2018-05-14 21:15 数月亮 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 一、Oracle数据库表分区概念和理解 1.1、已经存在的表没有方法可以直接转化为分区表。 1.2、不在分区字段上建立分区索引,在别的字段上建立索引相当于全局索引。效率低。 1.3、表空间概念: 表空间指的是是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称 阅读全文
posted @ 2018-05-09 00:15 数月亮 阅读(35425) 评论(0) 推荐(4) 编辑
摘要: 一、ReentrantLock简介 ReentrantLock字面意义上理解为可重入锁。那么怎么理解可重入这个概念呢?或者说和我们经常用的synchronized又什么区别呢? ReentrantLock可重入锁是一种递归无阻塞的同步锁机制,简单意思就是说可重入锁就是当前持有该锁的线程能够多次获取该 阅读全文
posted @ 2018-05-07 00:31 数月亮 阅读(764) 评论(0) 推荐(0) 编辑
摘要: str2,str3不会创建新的对象,而是使用常量池中已有的Hello。str4使用new关键字会创建一个新的对象。 三、编译器对字面值量的优化 编译器在编译源文件的时候若发现表达式的两边都是常量的话,会先进行计算,在将结果生成到字节码文件中去。所以jvm运行.class文件的时候。下面的内容应该是这 阅读全文
posted @ 2015-09-27 20:32 数月亮 阅读(252) 评论(0) 推荐(0) 编辑