读书笔记之《Java编程思想》

17. 容器

Set

存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。

Set接口不保证维护元素的次序

Map

映射表(关联数组)的基本思想是维护的是键-值(对)关联,因此可以用键来查找值。

基本方法

Map.put()
Map.get()

21. 并发

  • 阻塞:

如果程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,那么我们就说这个任务或线程阻塞了。

Java的线程机制是抢占式的。

一个线程就是在进程中的一个单一的顺序控制流,因此,单个进程可以拥有多个并发执行的任务。


LiftOff任务将显示发射之前的倒计时:

public class LiftOff implements Runnable{
	protected int countDown = 10;
	private static   int taskCount =0;
	private final int id=taskCount++;
	public LiftOff(){
		this.countDown=countDown;
	}

public String status(){
	return "#"+id +"("+(countDown>0 ? countDown:"LiftOff !")+").";
}

public void run(){
	while(countDown-->0){
	System.out.println(status());
	Thread.yield();
		}
	}
}

/*************************************************************/

public class ThreadPro {
    public static void main(String [] args){
        for(int i=0;i<5;i++)
            new Thread(new LiftOff()).start();
        System.out.println("Waiting for LiftOff !");
    }
}

  • 执行器(Executor)

Executor允许你管理异步任务的执行,而无需显式地管理线程的生命周期。


  • 优先级

线程的优先级将该线程的重要性传递给了调度器。

尽管CPU处理现有线程集的顺序使不确定的,但是调度器将倾向于让优先权最高的线程先执行。

另外会让优先级较低的线程执行的频率较低,故而优先权不会导致死锁。

posted @ 2018-01-28 21:50  daminzhou  阅读(142)  评论(0编辑  收藏  举报