04 2016 档案
摘要:1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: 1 Object o=new Object(); // 强引用 1 Object o=new Object(); // 强引用 1 Object o=new Object
阅读全文
摘要:Executor框架分离了任务的创建和执行。JAVA SE5的java.util.concurrent包中的执行器(Executor)管理Thread对象,从而简化了并发编程。Executor引入了一些功能类来管理和使用线程Thread,其中包括线程池,Executor,Executors,Exec
阅读全文
摘要:Phaser允许并发多阶段任务。Phaser类机制是在每一步结束的位置对线程进行同步,当所有的线程都完成了这一步,才允许执行下一步。 一个Phaser对象有两种状态: 活跃态(Active):当存在参与同步的线程的时候,Phaser就是活跃的,并且在每个阶段结束的时候进行同步。 终止态(Termin
阅读全文
摘要:Exchanger并发辅助类,允许在并发任务之间交换数据。具体来说Exchanger类在两个线程之间定义同步点。当两个线程到达同步点时,它们交换数据结构。需要注意的是Exchanger类只能同步两个线程。 <!-- Generated by javadoc (build 1.6.0-beta2) o
阅读全文
摘要:一、属性 Buffer有四个基本属性: 1、capacity 容量,buffer能够容纳的最大元素数目,在Buffer创建时设定并不能更改 2、limit buffer中有效位置数目,不能对超过limit中的区域进行读写。 3、position 下一个读或者写的位置 4、mark 用于记忆的标志位,
阅读全文
摘要:<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:27:29 CST 2007 --> 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的
阅读全文
摘要:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数 初始化 CounDownLatch。由于调用了countDown() 方法,所以在当前计数到达零之前,await()方法会一直受阻塞。之后,会释放所有等待的线程,await()的所有后续调用都将立即
阅读全文
摘要:Semaphore(信号量):是一种计数器,用来保护一个或者多个共享资源的访问。如果线程要访问一个资源就必须先获得信号量。如果信号量内部计数器大于0,信号量减1,然后允许共享这个资源;否则,如果信号量的计数器等于0,信号量将会把线程置入休眠直至计数器大于0.当信号量使用完时,必须释放。 实例代码:
阅读全文
摘要:Condition 将 Object 监视器方法(wait()、notify()和notifyAll())分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Con
阅读全文
摘要:原文链接:http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷 我们知道如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里
阅读全文
摘要:临界区:是一个用以访问共享资源的代码块,这个代码块在同一时间内只允许一个线程执行。 wait():必须在同步代码块中调用,如果在同步代码块外调用,JVM将抛出IllegalMonitorStateException异常。当一个线程调用wait()方法,JVM将这个线程休眠,并且释放控制这个同步代码块
阅读全文
摘要:①定义线程组 ThreadGroup类中有 2个构造方法,它们用来定义线程组。这 2个构造方法的使用格 式如下: 比如,创建一个名为fruit的线程组k,可用如下语句: 如果一个线程组有父线程组,则可以在定义时,用第二个构造方法指出父线程组的名字。比如: ②获得线程组中的信息 ThreadGroup
阅读全文
摘要:早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所
阅读全文
摘要:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM
阅读全文
摘要:一、使用方式。 join是Thread类的一个方法,启动线程后直接调用,例如: Thread t = new AThread(); t.start(); t.join(); 二、为什么要用join()方法 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线
阅读全文
摘要:Java提供了中断机制,可以使用它来结束一个线程。这种机制要求线程检查它是否被中断了,然后决定是不是响应这个中断请求。线程允许忽略中断请求并继续执行。Java的中断是一种协作机制。也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。Th
阅读全文
摘要:1.常见异常 1.java.net.SocketTimeoutException . 这个异 常比较常见,socket 超时。一般有 2 个地方会抛出这个,一个是 connect 的 时 候 , 这 个 超 时 参 数 由connect(SocketAddress endpoint,int time
阅读全文
摘要:前言 互联网发展到现在,早已超越了原始的初衷,人类从来没有像现在这样依赖过他;也正是这种依赖,促进了互联网技术的飞速发展。而终端设备的创新与发展,更加速了互联网的进化; HTTP/1.1规范发布于1999年,同年12月24日,HTML4.01规范发布;尽管已到2012年,但HTML4.01仍是主流;
阅读全文
摘要:PrintWriter 的Write()方法和println()方法有何细微的区别? PrintWriter 的Write()方法和println()方法有何细微的区别? 最近学习JAVA网络编程,在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和getOutp
阅读全文