- 博客(18)
- 资源 (36)
- 收藏
- 关注
转载 java内部类的作用分析
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的
2013-01-31 17:50:15 727
转载 synchronized
synchronized的一个简单例子public class TextThread { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 TxtThread tt = new TxtThread(); new Thread(tt).start(); n
2013-01-29 13:36:38 1187
原创 request和response的知识
public class Demo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } //在s
2013-01-24 16:17:24 9376 3
原创 类加载器的委托机制
与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。中文叫做类加载器。Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassL
2013-01-23 00:43:59 5178 4
原创 使用CAS实现的非阻塞计数器
//使用CAS实现的非阻塞计数器public class CasCount { private SimulatedCAS value; public int getValue(){ return value.get(); } public int increment(){ int v; do{ v = value.get(); }while(v != value.c
2013-01-20 22:52:22 1149
原创 Condition的应用
JDK原话,假定有一个绑定的缓冲区,它支持 put 和 take 方法。如果试图在空的缓冲区上执行 take 操作,则在某一个项变得可用之前,线程将一直阻塞;如果试图在满的缓冲区上执行 put 操作,则在有空间变得可用之前,线程将一直阻塞。我们喜欢在单独的等待 set 中保存 put 线程和 take 线程,这样就可以在缓冲区中的项或空间变得可用时利用最佳规划,一次只通知一个线程。可以使用两个 C
2013-01-20 17:44:02 877
原创 用读写锁包装Map
ReadWriteMap使用了ReentrantReadWriteLock来包装Map,使得它能够在多线程间被安全的共享,并仍然能够避免“读-写”或者“写-写”冲突。现实中,ConcurentHashMap的性能已经足够好了(经查看源代码,里面的是每个hash计算后的散列区域作为锁,这个大大减少了锁之间的竞争),ConcurrentHashMap源码:public V get(Obje
2013-01-20 11:07:58 2387
原创 简单的线程工厂
public interface ThreadFactory根据需要创建新线程的对象。使用线程工厂就无需再手工编写对 new Thread 的调用了,从而允许应用程序使用特殊的线程子类、属性等等。 此接口最简单的实现就是:class SimpleThreadFactory implements ThreadFactory { public Thread newThread(Runna
2013-01-19 19:15:08 2071
原创 可实时调整运行中的线程个数
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Iterator;import java.util.List;import java.util.concurrent.Callable;import java.ut
2013-01-18 10:39:00 1194
转载 停止Java线程,小心interrupt()方法
转自http://www.blogjava.net/jinfeng_wang/archive/2008/04/27/196477.html 程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。 背景 中断(Interrupt
2013-01-18 10:26:36 59191 11
原创 扩展线程池ThreadPoolExecutor的简单例子
import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;//扩展线程池以提供日志和计时功能public
2013-01-15 00:38:45 3333
转载 SynchronousQueue的简单应用2
转:http://blog.csdn.net/orgcheng/article/details/7985503SynchronousQueue的定义如下public class SynchronousQueueextends AbstractQueueimplements BlockingQueue, Serializable从上面可以看出,它实现BlockingQ
2013-01-14 23:01:35 8951 6
原创 SynchronousQueue的简单应用1
使用jdk的原话:一种阻塞队列,其中每个 put 必须等待一个take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在;除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头 是尝试添加到队列中的首个已排队线程元素;如果没有已排队线程
2013-01-14 22:50:12 1782
原创 使用CompletionService批处理任务
如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以保存与每个任务相关联的Future,然后不断地调用timeout为零的get,来检验Future是否完成。这样做固然可以,但却相当乏味。幸运的是,还有一个更好的方法:完成服务(Completion service)。CompletionService整合了Executor和BlockingQueue的功能。你
2013-01-13 13:01:27 20331 7
原创 使用Semaphore或Condition把任何容器转化为有界的阻塞容器
信号量被初始化为容器所期望容量的最大值。add操作在向底层容器中添加条目之前,需要先 获取一个许可。事实上,如果add操作没有能加入任何东西,它会立刻释放一个许可,同样,一个成功的remove操作释放一个许可,使更多的元素能够加入其中。我们常用的阻塞队列LinkedBlockingQueue是使用Condition来进行限制的,原理差不多。private final Condition n
2013-01-12 18:20:10 1401
原创 CountDownLatch和CyclicBarrier的简单应用1
import java.util.Random;import java.util.concurrent.CountDownLatch;public class Test11 { public static void main(String[] args) throws InterruptedException { Runnable task = new Runnable(){ @O
2013-01-12 17:07:49 801
转载 java 转html为pdf
转http://blog.csdn.net/is_zhoufeng/article/details/8244454最近有个需求转html为pdf 。用过itext 、 pd4ml ,都不理想,不是样式有问题,就是页面大小有问题。 或字体有问题。 解决办法是通过wkhtmltopdf工具 , 下载地址为:http://code.google.com/p/wkhtmlto
2013-01-11 10:28:31 4505 2
转载 jxl 遭遇读取sheet错误,不能getRows jxl.common.AssertionFailed
转:http://blog.csdn.net/zb0567/article/details/6367889Warning: Text Object on sheet "Sheet1" not supported - omitting jxl.common.AssertionFailed at jxl.common.Assert.verify(Assert.java:37)
2013-01-08 10:51:37 5308
log4j日志的工程
2014-05-27
android的内容提供者
2013-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人