自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (1)
  • 收藏
  • 关注

原创 ReentrantReadWriteLock读写锁

合理使用ReentrantReadWriteLock能相对于ReentrantLock提高不少效率,ReentrantReadWriteLock有两种锁一种是读操作相关的锁称为“”共享锁“” ,另外一种是与写相关的锁称为“”排他锁“”。使用ReentrantReadWriteLock很好地将读写分离,使得读读可以共享(不需要同步),读写互斥,写读互斥,写写互斥。下面写测试下 读读共享,读写互斥,写...

2017-08-26 11:06:59 157

原创 Condition实现生产者消费者模式(等待/通知机制)

我在前面的博客中写过一个生产者消费者的实现方法,只不过那篇文章用的是Object类的wait()和notify()、notifyAll().配以synchronized实现的。这篇文章将会用Reentrantlock进行同步,用condition的await()和signal、signalAll()实现等待、通知机制。需要注意的是:condition.await();调用后会立即失去锁,c

2017-08-26 10:51:32 593

原创 ReentrantLock实现同步

ReentrantLock 也可以实现synchronized方法、代码块的同步效果。ReentrantLock 实现同步代码如下:1 新建一个service类public class MyService { private static ReentrantLock lock = new ReentrantLock(); public static void Metho

2017-08-26 10:42:43 298

原创 管道流进行线程间通信

管道流是一种特殊的流,他能够支持线程之间的数据交流。一个线程发送数据到输出管道,另一个线程从输入管道中读取数据。通过使用管道实现不同线程之间的通信而无需借助类似临时文件之类的东西。java提供了4个类支持线程间的通信,分别是PipedInputStream 和  ;  (字节流)PipedReader 和 PipedWriter; (字符流)我将用上面两个类列做实例,对于下面两个类

2017-08-23 07:14:40 266

原创 Thread的join方法

线程的join方法,触发时可以让调用join方法的线程强制获得CPU运行资源,并在该线程死亡后运行其他资源。我将用join方法实现三个线程的顺序执行(确实,利用join方法可以让多线程顺序执行)。首先来看看join方法的一个简单的实现,从中体会下join方法的效果。1 新建一个实现Runable接口的类public class Task implements Runnable{ @Ov

2017-08-08 07:42:51 340

原创 lambda表达式与Function接口

这篇文章只是用lambda表达式实现一个数学运算工具类,来演示下如何新建一个可以运用lambda表达式的工具类,实际开发中,也没有必要为简单的四则运算写一个工具类。当然这里只是为了演示1 新建一个MathFunction类public class MathFunction { public static int arithmetic(int number, Function fu

2017-08-06 16:08:02 2771

原创 生产者消费者模式

有一个生产电脑的工厂,由于近来行业不景气,工厂不能大量制造电脑。每次只能生产一台电脑,等待电脑卖出去后,再生产一台电脑,等电脑卖出去后才能继续生产...(当然,我的这个举例有些生硬)。如何用程序来模拟这个场景呢?下面我用生产者消费者模式来模拟这个场景。首先,新建一个电脑类(相当于这个电脑工厂),这个电脑有两个方法,一个生产方法和一个消费方法。public class Computer {

2017-08-06 15:44:56 165

原创 java序列化

在系统运行的时候,如果你需要将某个对象的信息保存下来。以便在后来的某个时刻调用,除了缓存,还可以使用序列化。1 首先,要序列化的实体类必须实现 Serializable (这是一个标记接口,不用重写任何方法)。需要说明的是实体类的方法不会被序列化,transient关键字修饰的属性也不会被序列化,如果你不希望某个字段被序列化,可以用transient关键字修饰它。public class

2017-08-06 15:19:50 154

原创 Spring定时任务

Spring提供了一个很简单的方法做定时任务,我之前用过quartz,这个虽然也是spring的定时任务技术,但是我感觉quartz任然是比较复杂的。关于quartz实现定时任务这里就不详细讲解了。今天主要讲解利用spring task:注解主动注入定时任务 1 首先需要在spring-context.xml文件中引入下列代码。pool-size 定义了任务池的大小。

2017-08-06 10:02:37 300

原创 Spring日志记录+线程池

本文将介绍在Spring框架下如何利用拦截器做日志记录,简化我们的日志处理,1 首先我们需要在Spring-mvc.xml中注册这个拦截器,代码如下: 2 新建一个日志类 (setter、getter方法就没有拷贝了,但是重写了setParams方法)public class Log { private static final long s

2017-08-03 06:33:25 2075

空空如也

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

TA关注的人

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