1. 程式人生 > >JavaSE習題 第八章 執行緒(未完成)

JavaSE習題 第八章 執行緒(未完成)

問答題

1.執行緒和程序是什麼關係?

  程序是程式的一次動態執行,對應了從程式碼載入,執行至執行完畢的一個完整的過程

  執行緒是比程序更小的執行單位,一個程序在其執行過程中可以產生多個執行緒,形成多條執行線索

2.執行緒有幾種狀態?

  4種,新建,執行,中斷,死亡

3.引起執行緒中斷的常見原因是什麼?

  1.執行了sleep

  2.執行了wait

  3.cpu資源切換給其他執行緒

  4.進入阻塞狀態

4.一個執行緒執行完run方法後進行了什麼狀態?該執行緒還能呼叫start方法嗎?

  死亡狀態,不能

5.執行緒在什麼狀態,呼叫isAlive返回false

  死亡狀態

6.執行緒呼叫interrupt作用是什麼?

  吵醒休眠的執行緒

7.將第8-11中的synchronized去掉,重新編譯,觀察執行結果

  會出現重複

8.wait(),notify(),notifyAll()的作用

  使執行緒進入掛起狀態(sleep的時間不確定)

  喚醒一個掛起狀態的執行緒

  喚醒所有掛起狀態的執行緒

9.TicketSeller中的迴圈條件while(fiveNumber<1)換成if(fiveNumber<1)可行嘛

  不可行,while會迴圈,if只能判斷1次,可能會進行連續等待狀態

10.TicketSeller類中出現的 wait改成sleep(2000)重新編譯,觀察執行結果

11.什麼叫守護執行緒?

thread.setDaemon(true),則該執行緒為非守護執行緒

守護執行緒是在其他執行緒都執行完畢後立即中斷,那麼,該執行緒為守護執行緒(守護執行緒不穩定)

作業題

1.上機除錯8-1觀察結果是否相同

package cn.littlepage.game;

public class Test2 {
    public static void main(String[] args) {
        WriteWordThread zhang, wang;
        zhang = new WriteWordThread("");
        wang 
= new WriteWordThread(""); zhang.start(); for (int i = 0; i <= 80; i++) { System.out.println("我是主執行緒的語句"); } wang.start(); } } class WriteWordThread extends Thread { WriteWordThread(String s) { setName(s); } public void run() { for (int i = 1; i <= 80; i++) { System.out.println("我是一個執行緒,名字是" + getName()); } } }

不相同

2.上機除錯8-2,編寫3個執行緒,分別在命令列視窗輸出資訊//和第一題差不多

3.模仿8-4,編寫3個執行緒,使他們有更多的共享單元//使用implements runnable和第一題差不多,共享單元是new Thread(傳進同一個Thread的子類)

4.模仿8-12,編寫5個人同時買票,並規定賣票規則和排隊順序