JDK1.2引入最有争议性的改变是将集合类默觉得不是Thread安全性的. 一.Collection Class的概述 1. 具有Threadsafe 的Collection Class: java.util.Vector(List) 列表集合,通过索引操作. java.util.Stack(List) 继承自Vector,提供LIFO的顺序操作push进入,pop出元素. java.util.Hashtable(Map) 一个简单.无序的key与value的映射. java.util.…
第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ?     Thread是所在主机运行的应用程序任务(task). 仅仅有一个线程的样例: public class Factorial { public static void main(String[] args) {…
第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ?     Thread是所在主机运行的应用程序任务(task). 仅仅有一个线程的样例: public class Factorial { public static void main(String[] args) {…
一.Thread调度的概述 import java.util.*; import java.text.*; public class Task implements Runnable { long n; String id; private long fib(long n) { if (n == 0) return 0L; if (n == 1) return 1L; return fib(n - 1) + fib(n - 2); } public Task(long n, String id)…
一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(long timeout) throws InterruptedException      等待条件的发生.假设通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws Interrupted…
一.能避免同步吗? 取得锁会由于下面原因导致成本非常高:     取得由竞争的锁须要在虚拟机的层面上执行很多其它的程序代码.     要取得有竞争锁的线程总是必须等到锁被释放后. 1. 寄存器的效应 计算机有一定数量的主寄存器用来存储与程序有关的数据. 从逻辑上的观点来看,每一个Thread都有自己的一组寄存器.当操作系统将某个Thread分配给CPU时,它会把该Thread特有的信息载入到CPU的寄存器中. 在分配不同的Thread给CPU之前,它会将寄存器的信息存下来. 所以Thread间绝…
基础知识介绍: 子表达式匹配 环视 引号内的字符串:"(^")*" 12小时制:(1[0123]|[1-9]):[0-5][0-9]*(am|pm) 24小时制:(([01]?[0-9])|(2[0-3])):[0-5][0-9]* 浮点数,保留小数点两位,如果第三位不为零,保留第三位:~s/(\.\d\d[1-9]?)\d*/$1/ 纯数字,三位添加一个逗号:~s/(?<=\d)(?=(\d\d\d)+$)/,/g 文本中插入的数字,,三位添加一个逗号:~s/(?&l…
1.肯定断言:必须匹配一个字符 排除型字符组:匹配未列出字符的字符组 2.范围表示法——列出范围内所有的字符 大多数情况下,不会影响执行速度.但是,某些实现方式不能完全优化字符组.所以,最好是有范围表示法,有可能速度更快. [a-Z],可能存在遗漏:[a-zA-Z],可以匹配所有字母. 3.点号:在某些软件中,可以匹配任何字符:在其他软件中,匹配处理换行符之外的任何字符. .* :通常情况下,不能匹配换行符: [^"]* :替代 4.字符组减法:在字符组中进行减法运算,.NET提供 [a-a]-…
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同.相当于存取款交替进行,金额相同. 线程间通信,需要通过同一个同步监视器(也就是this或者显式的Object对象)调用通信方法, Object有三个方法,可以用于线程间通信 wait() 当前线程等待,并释放同步锁 wait():无限期等待 wait(long timeout):等待timeout…
  java7新加特性: 0B010101  二进制数 int c=0B0111_1111;   数值中使用下划线分隔 switch 支持String类型   字符串常量放在常量池 String s0="hello"; String s1="hello"; String s2="he" + "llo"; System.out.println(s0==s1); System.out.println(s0==s2);   数组:…