《java多线程编程实战指南 核心篇》读书笔记一
? ? 1. run方法是線程的任務(wù)處理邏輯的入口方法,它由java虛擬機(jī)在運(yùn)行相應(yīng)線程時(shí)直接調(diào)用,而不是由應(yīng)用代碼進(jìn)行調(diào)用。
? ? 2. 啟動(dòng)一個(gè)線程的實(shí)質(zhì)是請(qǐng)求java虛擬機(jī)運(yùn)行相應(yīng)的線程,而這個(gè)線程具體何時(shí)能夠運(yùn)行是由線程調(diào)度器(Scheduler)(線程調(diào)度器是操作系統(tǒng)的一部分)決定的。
? ?3. 在java平臺(tái)中,一個(gè)線程是一個(gè)對(duì)象,對(duì)象的創(chuàng)建離不開內(nèi)存空間的分配. 創(chuàng)建一個(gè)線程與創(chuàng)建其他類型的java對(duì)象所不同的是,java虛擬機(jī)會(huì)為每個(gè)線程分配調(diào)用棧(call stack)所需的內(nèi)存空間。調(diào)用棧用于跟蹤java代碼(方法)間的調(diào)用關(guān)系以及java代碼對(duì)本地代碼(Native Code, 通常是C代碼)的調(diào)用。
? ?4. java平臺(tái)中的任意一段代碼(比如一個(gè)方法)總是由確定的線程負(fù)責(zé)執(zhí)行的,這個(gè)線程就相應(yīng)地被稱為這段代碼的執(zhí)行線程。
? ?5. 多個(gè)線程實(shí)例可以共享同一個(gè)Runnable實(shí)例,這時(shí)候就會(huì)出現(xiàn)線程安全問題。
? ?6. 線程的層次關(guān)系: ? java平臺(tái)中,線程不是孤立存在的,線程與線程之間總是存在一些聯(lián)系。假如A線程所執(zhí)行的代碼創(chuàng)建了線程B,那么習(xí)慣上稱線程B為線程A的子線程,相應(yīng)的線程A就被稱為線程B的父線程。
?Thread.java源碼中的枚舉類State
public enum State {/*** Thread state for a thread which has not yet started.*/NEW,/*** Thread state for a runnable thread. A thread in the runnable* state is executing in the Java virtual machine but it may* be waiting for other resources from the operating system* such as processor.*/RUNNABLE,/*** Thread state for a thread blocked waiting for a monitor lock.* A thread in the blocked state is waiting for a monitor lock* to enter a synchronized block/method or* reenter a synchronized block/method after calling* {@link Object#wait() Object.wait}.*/BLOCKED,/*** Thread state for a waiting thread.* A thread is in the waiting state due to calling one of the* following methods:* <ul>* <li>{@link Object#wait() Object.wait} with no timeout</li>* <li>{@link #join() Thread.join} with no timeout</li>* <li>{@link LockSupport#park() LockSupport.park}</li>* </ul>** <p>A thread in the waiting state is waiting for another thread to* perform a particular action.** For example, a thread that has called <tt>Object.wait()</tt>* on an object is waiting for another thread to call* <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on* that object. A thread that has called <tt>Thread.join()</tt>* is waiting for a specified thread to terminate.*/WAITING,/*** Thread state for a waiting thread with a specified waiting time.* A thread is in the timed waiting state due to calling one of* the following methods with a specified positive waiting time:* <ul>* <li>{@link #sleep Thread.sleep}</li>* <li>{@link Object#wait(long) Object.wait} with timeout</li>* <li>{@link #join(long) Thread.join} with timeout</li>* <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>* <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>* </ul>*/TIMED_WAITING,/*** Thread state for a terminated thread.* The thread has completed execution.*/TERMINATED;}7.? 多線程編程的實(shí)質(zhì)就是將任務(wù)的處理方式由串行改為并發(fā),即實(shí)現(xiàn)并發(fā)化,以發(fā)揮并發(fā)的優(yōu)勢。
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的《java多线程编程实战指南 核心篇》读书笔记一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单调栈-窗口
- 下一篇: 《java多线程编程实战指南 核心篇》读