java知识
jackllvv
这个作者很懒,什么都没留下…
展开
-
java线程池(很好的文章)
作者:海子出处:http://www.cnblogs.com/dolphin0520/Java并发编程:线程池的使用Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低转载 2017-08-17 11:00:08 · 165 阅读 · 0 评论 -
java桥接方法
一个很典型的泛型(generic)代码。T是类型变量,可以是任何引用类型:public class Pair{ private T first=null; private T second=null; public Pair(T fir,T sec){ this.first=fir;转载 2017-08-24 17:00:40 · 384 阅读 · 0 评论 -
java线程中断的理解
这样的情景您也许并不陌生:您在编写一个测试程序,程序需要暂停一段时间,于是调用 Thread.sleep()。但是编译器或 IDE 报错说没有处理检查到的 InterruptedException。InterruptedException 是什么呢,为什么必须处理它?对于 InterruptedException,一种常见的处理方式是 “生吞(swallow)” 它 —— 捕捉它,然后转载 2017-08-15 15:31:18 · 277 阅读 · 0 评论 -
java并发工具CyclicBarrier的理解和使用
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。转载 2017-08-15 10:47:22 · 196 阅读 · 0 评论 -
java并发工具Semaphore的理解和使用
Semaphore是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态。它的用法如下转载 2017-08-15 10:00:46 · 223 阅读 · 0 评论 -
java并发工具CountDownLatch的理解以及使用
最近在准备面试,所以临时抱抱佛脚,翻翻之前的学习笔记,对java多线程有了进一步的了解。还真是应了那句话:“书读百遍,其义自见”。废话不多说,说说我对CountDownLatch的一些理解。1.CountDownLatch是干嘛的CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只原创 2017-08-14 23:51:06 · 8813 阅读 · 2 评论 -
java中的锁分类
1. 同步的原理JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现,而方法同步是使用另外一种方式实现的,细节在JVM规范里并没有详细说明,但是方法的同步同样可以使用这两个指令来实现。monitorenter指令是在编译后插入到同步代码块的开始位置,而monitore转载 2017-08-15 20:27:00 · 673 阅读 · 0 评论 -
slf4j logback log4j slf4j-log412 log4j-over-slf4j 关系详解
引言对于j2ee 开发者来说,难免会引入各种框架,而当需要查看框架打印的日志的时候,你会发现每个框架引用的日志框架又不相同,什么slf4j,logback,log4j… 头都大了,处理的一不小心,轻则日志打印不出来,重则项目起不来,甚至会造成内存泄露。那么他们之间到底是什么关系呢?java中的日志框架上图可以大体概况java的日志框架结构,slf4j和jcl作为日志的门面,存在于最上层。我...原创 2018-09-25 16:00:49 · 4813 阅读 · 1 评论 -
分布式锁初探
分布式锁初探为什么需要分布式锁?需要保证在分布式场景下只有一个线程同时在执行一个代码片段或者一个资源同时只有一个线程在使用。常见的场景: 分布式任务,秒杀。需要什么样的分布式锁?高可用有失效时间(避免死锁)可重入(结合具体业务)阻塞(结合具体业务)性能高公平锁(需要?)实现基于数据库实现基于唯一索引我们知道,数据库可以通过唯一索引来保证数据的唯一性,我们可以利用数据...原创 2019-06-28 17:18:15 · 257 阅读 · 0 评论