自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

转载 Java并发编程之闭锁CountDownLatch和栅栏(CyclicBarrier)

栅栏类似闭锁,但是它们是有区别的.1.闭锁用来等待事件,而栅栏用于等待其他线程.什么意思呢?就是说闭锁用来等待的事件就是countDown事件,只有该countDown事件执行后所有之前在等待的线程才有可能继续执行;而栅栏没有类似countDown事件控制线程的执行,只有线程的await方法能控制等待的线程执行.2.CyclicBarrier强调的是n个线程,大家相互等待,只要有一个没完成,所有人都

2015-08-31 16:20:23 996

原创 java --threadgroup线程组与UncaughtExceptionHandler

threadgroup线程组1.线程组表示一个线程的结合.此外线程组也可以包含其他线程组.线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。 2.每个线程产生时,都会被归入某个线程组(Java中每个线程都是属于某个线程组),视线程是在那个线程组中产生而定.如果没有指定,则归入产生该子线程的线程的线程组中.(如在main中初始化一个线程,未指定线程组,则线程所属线程组为main

2015-08-31 15:07:05 875

原创 MethodHandle与反射Method区别,invokedynamic指令

MethodHandle与反射Method区别MethodHandle的使用方法和效果上与Reflection都有众多相似之处。不过,它们也有以下这些区别:Reflection和MethodHandle机制本质上都是在模拟方法调用,但是Reflection是在模拟Java代码层次的方法调用,而MethodHandle是在模拟字节码层次的方法调用。在MethodHandles.Lookup上的三个方

2015-08-27 15:50:14 6689

转载 Java 泛型数组

Java 不支持泛型数组。也就是说,[java] view plaincopyList[] ls = new ArrayList[10];  是不支持的,而[java] view plaincopyList[] ls = new ArrayList[10]  却可以。是我一直不清楚为什么不能够声明泛型的数组,指

2015-08-24 16:59:32 375

原创 leetcode算法思路总结

算leetcode法思路总结1.Minimum Window Substring问题 Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). For example, S = “ADOBE

2015-08-05 17:28:47 1338

原创 median of two sorted arrays

题目:求两个已排序数组合并之后形成的排序数组的中位数。思路一:利用归并排序的思想分别从两个数组中取数据,直到取到第(m+n)/2数据为止(m、n分别为两个数组A、B的长度)。思路二:将原问题转变成一个寻找两个已排序数组中前k小数的问题。在此的k等于(m+n)/2。首先假设数组A和B的元素个数都大于k/2,我们比较A[k/2-1]和B[k/2-1]两个元素,这两个元素分别表示A的第k/2小的元素和B

2015-08-05 11:03:00 360

原创 TCP超时重传机制

TCP可靠性中最重要的一个机制是处理数据超时和重传。TCP协议要求在发送端每发送一个报文段,就启动一个定时器并等待确认信息;接收端成功接收新数据后返回确认信息。若在定时器超时前数据未能被确认,TCP就认为报文段中的数据已丢失或损坏,需要对报文段中的数据重新组织和重传。尽管超时重传的概念十分简单,但是在实现中,TCP处理超时重传的机制与其他可靠性协议相比是相当复杂的。RTO 影响超时重传机制协议效率

2015-08-04 19:40:54 1998

原创 Java线程调度器ScheduledThreadPoolExecutor 分析

自jdk1.5开始,Java开始提供ScheduledThreadPoolExecutor类来支持周期性任务的调度,在这之前,这些工作需要依靠Timer/TimerTask或者其它第三方工具来完成。但Timer有着不少缺陷,如Timer是单线程模式,调度多个周期性任务时,如果某个任务耗时较久就会影响其它任务的调度;如果某个任务出现异常而没有被catch则可能导致唯一的线程死掉而所有任务都不会再被调度

2015-08-04 10:47:47 821

转载 java线程池原理

原文地址: http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html下面开始今天的正文,线程池的核心类为ThreadPoolExecutor类,线程池基本是围绕它展开的,网上有大堆的学习资料,想快速入门,还是看JDK API,里面有详细的类说明,这里主要介绍其流程以及分析固定线程池(Executors.newFixedThreadP

2015-08-03 22:04:12 280

原创 java 伪共享(false sharing)解决思路

怎么样避免伪共享呢?一个典型的例子就是lmax disruptor中的缓存行填充技术。假设cache line的大小是64字节,一个cache line能容纳8个long型变量,disruptor中的做法是在long变量的前面和后面分别填充7个long变量,这样就可以避免我们需要的变量和其他变量在同一个cache line,解决伪共享问题。(当变量类型不是long的时候,我们要在此变量前后填充一些变

2015-08-02 16:03:38 678

原创 reentrantlock与synchronized

关于互斥锁:所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们通常使用synchronized机制控制多个线程对共享资源的访问. 而现在, Lock提供了比synchronized机制更广泛的锁定操作, Lock和synchronized机制的主要区别:synchronized机制提供了对与每个对象相关的隐式监视器锁的访问, 并强制所有锁获取和释放均要出现在一个块结构中

2015-08-02 14:45:49 484

原创 tcp粘包、 拆包 与解决方法

**我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以

2015-08-02 10:21:45 2029

空空如也

空空如也

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

TA关注的人

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