自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YellowStar的博客

每天学习一点点,每天提升一点点

  • 博客(12)
  • 资源 (3)
  • 收藏
  • 关注

原创 JUC学习笔记 -- (10) 线程池

为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销 线程并发数量过多,抢...

2018-10-25 16:52:38 327

原创 JUC学习笔记 -- (9) ReadWriteLock读写锁的使用

  说到Java并发编程,很多开发第一个想到同时也是经常常用的肯定是Synchronized,但是Synchronized存在明显的一个性能问题就是读与读之间互斥,简言之就是,我们编程想要实现的最好效果是,可以做到读和读互不影响,读和写互斥,写和写互斥,提高读写的效率,这就要用到本章的重点ReadWriteLock读写锁。之前文章已经介绍了Lock的一种实现ReentrantLock的使用,其...

2018-10-24 19:33:54 730

原创 Cannot refer to a non-final variable xx inside an inner class defined in a different method的原因

今天遇到一个小问题,下面是网上摘抄的解释:为了说明这个问题,先得明白说明是局部内部类,局部内部类就是在外部类的方法中定义的类。那么标题中的错误指的是,内部类不能引用该方法中非 final 修饰的变量。那么为什么呢?因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在...

2018-10-24 17:27:22 1141

原创 JUC学习笔记 -- (8) 多线程并发之生产者消费者模式的两种实现

生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。 真实世界中的生产者消费者模式生产者和消费者模式在生活当中随处可见,它描述的是协调与协作的关系。比如一个人正在准备食物(生产者),而另一个人正在吃(消费者),他们使用一个共用的桌子用于放置盘子和取走盘子,生产者准备食物,如果桌子上已经满...

2018-10-23 17:49:17 412

原创 JUC学习笔记 -- (7) Condition-线程通信

关于线程通信,使用synchronized时使用wait、notify和notifyAll来实行线程通信。而使用Lock如何处理线程通信呢?答案就是本片的主角:Condition.Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-s...

2018-10-23 17:14:26 200

原创 JUC学习笔记 -- (6) Lock锁初探

首先我们来回忆一下上一节讲过的synchronized关键字,该关键字用于给代码段或方法加锁,使得某一时刻它修饰的方法或代码段只能被一个线程访问。那么试想,当我们遇到这样的情况:当synchronized修饰的方法或代码段因为某种原因(IO异常或是sleep方法)被阻塞了,但是锁有没有被释放,那么其他线程除了等待以外什么事都做不了。当我们遇到这种情况该怎么办呢?我们今天讲到的Lock锁将有机会为此...

2018-10-22 12:05:06 2959

原创 JUC学习笔记 -- (5) 线程创建的第三种方式Callable

创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就产生了第三种方式:实现Callable接口的方式,可以获取到线程执行的返回值。Callable和Future介绍...

2018-10-22 11:44:37 177

原创 JUC学习笔记 -- (4) CountDownLatch闭锁

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch类只提供了一个构造器:public CountDownLatch(int count) { }; //参数count为计数值...

2018-10-22 11:22:50 171

原创 JUC学习笔记 -- (3)同步容器类和并发容器类

一、同步容器类包括Vector(实现了一个动态数组,和ArrayList相似,但两者是不同的)和Hashtable。同步容器类的问题:例如:Vector的getLast方法,和deleteLast方法,都会执行“先检查,后执行”操作,每个方法首先都获得数组的大小,然后通过结果来获取或删除最后一个元素。如果线程A调用getLast,线程B调用deleteLast,在线程A调用size和g...

2018-10-22 10:55:24 194

原创 JUC学习笔记 -- (2)并发编程的3个概念 ,原子性,可见性,有序性!

并发编程中的三条性质:原子性,可见性,有序性1.原子性原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。即整体不可分割。在Java中,对基本数据类型(例外就是long和double的非原子协定)的变量的读取和赋值操作是原子性操作。X=10;  //原子性(简单的读取、将数字赋值给变量)Y = x;  //变量之间的相互赋值,不是原子操...

2018-10-21 12:22:38 342

原创 JUC学习笔记 -- (1)Volatile和内存可见性

一、内存可见性可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。Java内存模型(JMM)Java内存模型(Java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的底层细节。所有的线...

2018-10-19 17:03:52 347

原创 Java堆溢出产生原因和排查工具MAT的使用

Java堆溢出(OOM for Heap)Java虚拟机内存模型中堆用于存储对象实例,当GC Roots到创建的对象之间有可达路径时,就可以避免垃圾回收机制回收这些对象,那么只要不断地创建这样的对象,当数量到堆的容量限制后就会产生堆内存溢出异常(OOM for Heap)。获取Heap Dump文件Heap Dump 是一个 Java 进程在某个时间点上的内存快照。 Heap Dump...

2018-10-13 17:55:33 2484

mybatis逆向工程

一个完整的mybatis逆向工程,只需要修改下配置文件中的数据库相关配置就可以直接使用了。3积分你买不了吃亏你买不了上当。。。

2018-07-04

使用spring环境常用jar

使用spring环境常用jar,包括IOC、AOP、事务、C3P0连接池,jUnit单元测试、mysql驱动包等

2018-05-16

springsource-tool-suite-3.7.0.RELEASE-e4.5-updatesite.zip

spring插件springsource-tool-suite-3.7.0.RELEASE-e4.5-updatesite.zip

2018-05-16

空空如也

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

TA关注的人

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