答:java
本次PTA做業題集多線程多線程
答:實現Runnable接口,表明任務。在任務中,從新定義run方法,將要進行的流程任務代碼寫入run()。能夠經過BallRunnable類將任務指派給線程,並支持多線程。
調用Thread.sleep進行休眠,便是讓當前運行的線程放棄本身所佔用的CPU),給其餘線程運行的機會,這樣有暫停當前線程的做用。學習
答:this
並回答:a)經過定義Runnable接口的實現類來實現多線程程序比經過繼承自Thread類實現多線程程序有何好處?b) 6-1,6-3,6-11實驗總結。
答:線程
6-1:學會如何建立線程,並將任務指派給線程。任務類能夠繼承Thread類,任務代碼在複寫run方法中。
6-3:當任務代碼較爲簡單的時候,可使用匿名內部類和lambda表達式去改寫任務代碼。
6-11:任務類實現Runnable接口,將任務代碼寫入實現接口的子類run方法中。設計
Thread t1 =new Thread(() ->{ System.out.println(mainThreadName); String t=Thread.currentThread().getName(); System.out.println(t); System.out.println(Arrays.toString(getClass().getInterfaces())); });
答:中止線程的方法有:
一、線程自己調用stop()方法,自我終止。
二、 使用interrupt方法終止線程
三、採用boolean標誌來使線程中的run()方法退出3d
答:將用synchronized修飾Counter的方法。各個線程互斥訪問Counter的id,使得id最後結果爲0。
運行後:
code
完成題集6-4(互斥訪問)與6-5(同步訪問)component
答:
一、使用synchronized同步程序塊。鎖住要操做的對象自己(this),誰拿到這個鎖,誰就能夠運行進行對象(this)的控制的代碼。將對象做爲鎖,就能夠操做對象控制的那段代碼。視頻
public void deposit(int money){ synchronized(this){ this.balance+=money; } } public void withdraw(int money){ synchronized(this){ this.balance-=money; }
二、ReentrantLock,lock,unlock方法
public class Account { private Lock poolLock = new ReentrantLock(); int balance; public void deposit(int money){ poolLock.lock(); this.balance+=money; poolLock.unlock(); } public void withdraw(int money){ poolLock.lock(); this.balance-=money; poolLock.unlock(); } }
答:
一、同步方法直接在方法上加synchronized實現加鎖,同步代碼塊則在方法內部加鎖,同步方法鎖的範圍比較大,而同步代碼塊範圍要小點。
二、使用的是同步方法,那麼整個方法中的全部內容都會被當作一個原子操做。而事實上在但當咱們可能只是方法中某一段內容須要同步,同步代碼塊能夠幫助咱們只在必要的地方進行同步。
三、在同步代碼塊中能夠自由的選擇鎖。在同步代碼塊中,咱們能夠自由的選擇任何一個java對象實例做爲同步過程當中要使用到的鎖。可是對於實例同步方法而言,這個鎖是不能選擇的,這個鎖只能是這個對象實例。
答:得到惟一的鎖來打開資源,而不容許其餘線程的任務打擾,其餘線程就先等待,notify()以後進入Lock Pool,當且僅當使用資源以後,把鎖還回去
,即poolLock.unlock(),這時候在Lock Pool的線程才能夠繼續。
答:使用synchronized、wait、notify等關鍵字和方法實現線程的協同合做。
答:不正常。倉庫滿的狀況下,添加貨物的操做沒有進行,但仍然有計數,最後剩餘的貨物不爲0。
答:
題目集:多線程
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
必須出現幾個要素:提交日期-用戶名(姓名與學號)-不提交說明
須要有兩張圖(1. 排名圖。2.PTA提交列表圖)
須要將每週的代碼統計狀況融合到一張表中。
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 0 | 0 |
5 | 739 | 739 | 16 | 16 |
6 | 1084 | 345 | 28 | 12 |
7 | 1180 | 96 | 30 | 2 |
8 | 1627 | 447 | 35 | 5 |
9 | 1986 | 359 | 44 | 9 |
10 | 2350 | 364 | 56 | 12 |
11 | 2534 | 184 | 61 | 5 |
12 | 2909 | 375 | 70 | 9 |