J2SE
文章平均质量分 64
SpringThread
这个作者很懒,什么都没留下…
展开
-
线程池的原理和连接池的原理
线程池的原理: 来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新转载 2009-01-20 00:01:00 · 1776 阅读 · 2 评论 -
享元模式(Flyweight pattern)
<br />享元模式(Flyweight pattern)也被称作“轻量级模式”。<br />享元模式的主要目的是减少系统中重复对象的数量,在一定程度上降低内存消耗,提高系统运行速度。<br />当系统中需要创建多个对象,且这些对象可以在同一时间被多个线程共享的时候,可以考虑使用享元模式。<br />It can greatly improve performance if equivalent objects are requested often, especially if they are expe原创 2010-12-17 16:52:00 · 934 阅读 · 0 评论 -
遍历中删除容器中元素出现ConcurrentModificationException原因及处置
今天在遍历一个Map时,需要删除Map中的某些元素,但出现了ConcurrentModificationException,上网查了下,原来是迭代器Iterator的问题。 下面用代码具体说明下:import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.S原创 2009-10-20 13:53:00 · 3492 阅读 · 1 评论 -
java内省(Introspector)简介
内省是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则(但你最好还转载 2009-04-10 09:16:00 · 1725 阅读 · 0 评论 -
Servlet和Filter的url匹配以及url-pattern详解
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜。估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,servlet和filter中的url-pattern还是有一些文章在里面的,总结了一些东西,放出来供大家参考,以免遇到问题又要浪费时间。 一,servlet容器对url的匹配过程:当一个请求发送转载 2009-03-28 08:50:00 · 1006 阅读 · 1 评论 -
另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
今天看Think in java 的GUI这一章的时候,里面的TextArea这个例子在遍历Map时用到了Map.Entry 和 Map.entrySet() ,记得只见过Map.KeySet()和values()这两个方法,于是到API中一看,Map.entrySet() 这个方法返回的是一个SetMap.EntryK,V>>,Map.Entry 是一个接口,他的用途是表示一个映射项(里面有Ke原创 2008-12-15 18:13:00 · 10940 阅读 · 2 评论 -
正则表达式中的非捕获组(non-capturing)的用法
今天学了一下午的正则表达式(马士兵的那个视频教程),这RegularExpressions也算是一门小语言了,唯一让我不能理解的就是API里非捕获组中的那些用法,经过在论坛的查找学习,呵呵 ,现在终于理解了,下面与大家分享下。 捕获组(capturing group)是把多个字符当作一个单元对待的一种方式。通过把字符括在括号内创建捕获组。例如,正则表达式(dog)创建包含字母“d”、“o”原创 2008-12-16 21:13:00 · 2613 阅读 · 0 评论 -
Java开发中的线程安全选择与SwingUtilities类的invokeLater()或invokeAndWait()
Swing API的设计目标是强大、灵活和易用。特别地,我们希望能让程序员们方便地建立新的Swing组件,不论是从头开始还是通过扩展我们所提供的一些组件。 出于这个目的,我们不要求Swing组件支持多线程访问。相反,我们向组件发送请求并在单一线程中执行请求。 本文讨论线程和Swing组件。目的不仅是为了帮助你以线程安全的方式使用Swing API,而且解释了我们为什么会选择现在这样的线程方转载 2008-12-15 20:24:00 · 1682 阅读 · 0 评论 -
StringBuilder与StringBuffer
在单机非多线程(Multithread)的情况下使用StringBuilder会有较好的效率,因为StringBuilder没有处理同步(Synchronized)问题。StringBuffer则会处理同步问题,如果StringBuilder会在多线程下被操作,则要改用StringBuffer,让对象自行管理同步问题。Instances of StringBuilder are not saf原创 2009-02-03 14:32:00 · 696 阅读 · 0 评论 -
java中内存的栈与堆
(1) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管原创 2009-02-02 13:51:00 · 723 阅读 · 0 评论 -
Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包原创 2009-01-21 17:32:00 · 67251 阅读 · 15 评论 -
Java Exception: Non-terminating decimal expansion
BigDecimal除法运算报错,错误如下:Non-terminating decimal expansion; no exact representable decimal result原因是: BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)if divisor is zero, roundin原创 2012-09-18 17:50:28 · 1918 阅读 · 0 评论