原创 線程對象基本概念

線程對象:兩種方式聲明開啓線程、sleep暫停執行、中斷(interrupts)、線程迴歸(join)、簡單線程示例 兩種方式聲明開啓線程:實現runnable接口、繼承Thread sleep方式暫停線程執行Thread.sleep()

原创 活性(liveness)

活性(liveness):併發程序及時執行程序的能力稱爲活性,包括死鎖、飢餓、活鎖。 死鎖: a對象要取得b對象的鎖,此時b對象也要取得a對象的鎖,陷入死鎖。          3.飢餓:假設一個對象的某個同步方法會佔用很長時間,若有個

原创 不可變對象(immutable objects)

不可變對象(immutable objects):同步類示例、不可變對象策略。 不可變對象能避免線程衝突、內存一致問題,但程序員一般不願意用,它們關注對象創建的消耗而不是對象更新消耗,其實不可變對象的創建消耗完全可以由其他方面帶來的效率低

原创 泛型擦除(type erasure)和橋接方法(bridge method)

無界通配符會被編譯爲Object,有邊界的通配符會被編譯爲相應的邊界   正常類的繼承是不會產生這個橋接方法的。 橋接方法,一個類、接口繼承或實現某個類、接口時,會在子類中出現一個橋接方法。 這個方法不能被子類調用,即mn不能調用到這

原创 堆污染(heap pollution)

定義:某個參數化類型的變量指向的對象,並不是該參數化類型。 如下兩種情形: 1,方法參數需要傳入List<Integer>,但是傳入List<String>就會編譯報錯;同樣可以類比到方法參數是可變參數類型時。 2,方法參數需要傳入Lis

原创 解謎計算機科學(前言)-----轉載自王垠的博客--http://www.yinwang.org/

解謎計算機科學(前言) 計算機科學直到今天仍然是一個謎。它簡單而美麗的精華,被壓在沉重的歷史包袱和功利誘惑之下。紛繁複雜的 IT 技術充斥着各種浮誇和忽悠,變成一本本大部頭“聖經”,讓人不知所措,頭腦發漲,讓外行尤其是女性望而卻步。她們說

原创 jvm內存模型

1,堆、方法區是線程共享:-Xms20m –Xmx20m –XX:+HeapDumpOnOutOfMemoryError 前兩個參數是調整堆堆最大、最小內存,後面是當出現內存溢出時導出dump文件,可以用來分析異常。 -XX:PermSi

原创 解謎計算機科學(1)-----轉載自王垠的博客--http://www.yinwang.org/

解謎計算機科學(1) 第一章 - 初識計算 (本書版權歸王垠所有,禁止轉載。請認準 yinwang.org 爲唯一的閱讀地址,以獲得最近更新。) 要完全掌握一個學科的精髓,不能從細枝末節開始。一位哲人說過,人腦的能力受限於他自己的信念,當

原创 併發編程實現的基本方式、線程池創建及執行任務、線程優先級、後臺線程

1,Thread.yield()方法可以提醒線程調度器去執行別的線程; 2,ExecutorService exec = Executors.newCachedThreadPool(); exec.execute(實現runable接口的

原创 繼承、類加載

外部類的修飾符只能是public或着default,注意import類時就會受權限控制符的約束。 import static xxx.className.* 將該類的所有靜態方法導入,調用時只需要將方法名寫出就行,無需聲明類名。 靜態內部