java
文章平均质量分 83
牛奋lch
我是一只快乐的程序猿……
展开
-
java中callback回调机制解析
我们首先来看下面一段代码,这段代码是我们使用Jedis封装服务的一个实现:package com.chhliu.myself.redis;import javax.annotation.Resource;import org.springframework.stereotype.Service;import redis.clients.jedis.ShardedJe原创 2016-08-29 16:03:17 · 11729 阅读 · 0 评论 -
使用Junit做参数化测试
很多时候,我们在开发中写单元测试的时候,当对同一个方法的不同边界取值时,需要写多个单元测试来达到分支覆盖的效果,例如测试两个数相除,至少需要测试以下几个情况:1、被除数为0的情况2、除数为整数的情况3、除数为小数的情况所以,我们至少需要写三个单元测试。下面来介绍一下使用Junit来进行参数化的测试,可以通过批量构建测试参数,从而达到全覆盖的目的,首先还是来先看一段代码:im原创 2017-09-20 19:52:29 · 3786 阅读 · 1 评论 -
使用Maven打可执行jar包(并引入依赖的jar)
一、在pom文件中,引入如下插件 dubbo-producer src/main/java src/main/resources ${project.build.directory}原创 2016-12-20 17:11:14 · 1163 阅读 · 0 评论 -
关联源码时,jar包中文乱码解决方法
步骤一:然后点击apply即可步骤二:注意:要点击Update才会生效哦!步骤三:重启Eclipse,即可!原创 2016-12-20 17:10:46 · 682 阅读 · 0 评论 -
java并发编程系列之Exchanger的使用
我们在看香港的警匪片的时候,经常会有这种画面,毒贩和贩毒的人,会先约定某个地点,然后进行一手交钱一手交白粉的勾当,其实这种场景使用jdk1.5并发包中的Exchanger类也可以实现,下面我们就用一个简单的示例,来模拟下这种场景,示例代码如下:public class ExchangeDemo { public static void main(String[] args) { // 新原创 2016-12-09 15:46:59 · 1467 阅读 · 1 评论 -
java并发编程系列之CountDownLatch的使用
说到定时器,我们就会想到java中的Timer。在jdk1.5中,也提供了一个类似定时器功能的类CountDownLatch,只不过两者有些区别,CountDownLatch类同一时刻只能由一个线程去操作也就是说,在多线程并发下,同时只能由其中的一个线程去操作这个计时器。CountDownLatch 的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下原创 2016-12-09 15:42:37 · 707 阅读 · 0 评论 -
java并发编程系列之CyclicBarrier的使用
在日常活动中,经常会遇到这样一种场景:我们会约定在某个地点集合,等所有的组员都集合后,然后我们才开始活动,等活动结束后,所有的组员再一次集合,报道后再各自回家。在我们的程序中,也会经常遇到这种场景,需要所有的子线程都结束之后,再汇聚所有的结果,然后根据结果在决定下一步的操作,这个时候,我们就需要使用CyclicBarrier,进行线程的同步。下面先看一个简单的示例,代码如下:public cl原创 2016-12-09 15:38:25 · 650 阅读 · 0 评论 -
java并发编程系列之Semaphore信号量的使用
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量,从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用原创 2016-12-09 15:34:23 · 4630 阅读 · 0 评论 -
java并发编程系列之Condition的使用
Condition是做什么用的了?Condition是用来实现线程间通信的,说到这,可能很多人都想到了wait和notify以及notifyAll,没错,Condition的功能和他们类似,只是功能更强而已,下面我们就来学习一下线程间通过Condition来实现通信。Condition也是jdk1.5并发包下的一个接口,原型如下:public interface Condition {原创 2016-12-09 15:31:34 · 589 阅读 · 0 评论 -
java并发编程系列之Callable与Future的应用
在我们传统的观念中,创建线程无非就两种方式:1、直接new 一个Thread;2、实现Runnable,其实这两种方式的实质是一样的,有一个共同的特点:无返回值,并且无法抛出返回结果的异常,顺便我们讲一下其他的线程创建方式。那我们想拿到线程的返回值,怎么做了?我们可以使用java并发包中的Callable和Future来实现。下面就来分享一下实现方式。1、Callable接口Callabl原创 2016-12-09 15:27:32 · 585 阅读 · 0 评论 -
java并发编程系列之ReadWriteLock读写锁的使用
前面我们讲解了Lock的使用,下面我们来讲解一下ReadWriteLock锁的使用,顾明思义,读写锁在读的时候,上读锁,在写的时候,上写锁,这样就很巧妙的解决synchronized的一个性能问题:读与读之间互斥。ReadWriteLock也是一个接口,原型如下:public interface ReadWriteLock { Lock readLock(); Lock w原创 2016-12-09 15:20:21 · 15551 阅读 · 6 评论 -
java并发编程系列之Lock的使用
Jdk1.5中,在java.util.concurrent.locks包下,有一组实现线程同步的接口和类,说到线程的同步,很多立马就会想到synchronized关键字,这是java内置的关键字,用来处理线程同步的,但这个关键字有很多的缺陷,使用起来也不是很方便和直观,所以就出现了Lock,下面,我们就来对比着讲解Lock。synchronized关键字:该关键字在使用的过程中会有如下几个原创 2016-12-09 15:11:50 · 702 阅读 · 0 评论 -
java中OutOfMemoryError异常总结
最近在生产中,接连出现了OutOfMemoryError的异常,现将相关总结如下:1 java.lang.OutOfMemoryError: unable to create new native thread这个异常是由于操作系统没有足够的资源来创建新的线程造成的。系统创建线程时,除了要在Java堆中分配内存外,操作系统本身也需要分配资源来创建线程。因此,当线程数量大到一定程度以后,原创 2017-09-04 22:04:32 · 1051 阅读 · 0 评论