20165233 2017-2018-2 《Java程序設計》第八週學習總結

20165233 2017-2018-2 《Java程序設計》第八週學習總結

教材學習內容總結

  • 基礎:Java中的線程,Thread類與線程的建立java

    - 線程是比進程更小的單位。
    - JVM(Java虛擬機)中的線程調度器負責管理線程,在採用時間片的系統中,每一個線程都會有機會得到CPU的使用權。
    - 線程建立後僅僅是佔有了內存資源,在JVM管理的線程中尚未這個線程,此線程必須調用`start()`方法通知JVM。
  • 重點(難點):線程同步,協調同步的線程git

    - 線程同步是指幾個線程都須要調用同一個同步方法。
    - 一個線程在使用同步方法時,可能根據問題的須要,必須使用`wait()`方法暫時讓出CPU的使用權。
    - 其餘線程在使用這個同步方法時若是不須要等待,那麼它用完這個同步方法的同時,應當執行`notifyAll()`方法通知全部因爲使用這個同步方法而處於等待的線程結束等待。
  • 瞭解:線程的經常使用方法,線程聯合,GUI線程
  • 實用:計數器線程多線程

教材學習中的問題和解決過程

  • 問題1:可否在一個Java應用程序出現2個以上的無限循環呢?
  • 問題1解決方案:若是不使用多線程技術,是沒法解決上述問題的。由於第1個代碼在while語句裏無限循環,那麼第2個while語句中的代碼是永遠沒有機會執行的。若是能在主線程中建立兩個線程,那麼這兩個while語句將會被輪流執行。
  • 問題2:爲何程序必須在子類中重寫父類的run()方法呢?
  • 問題2解決方案:其緣由是Thread類中的run()方法沒有具體內容,程序要在Thread類的子類中重寫run()方法來覆蓋父類的run()方法。
  • 問題3:時間片是什麼?
  • 問題3解決方案:時間片即CPU分配給各個程序的時間,每一個線程被分配一個時間段,稱做它的時間片,即該進程容許運行的時間,使各個程序從表面上看是同時進行的。

代碼調試中的問題和解決過程

  • 問題1:教材362頁的Example12_1.java中,主線程執行到第1次循環,輸出了
主人1

,主線程爲何沒有將這個for循環語句執行完呢?學習

  • 問題1解決方案:因爲主線程在使用CPU資源時,已經執行了
speakElephant.start();
speakCar.start();

此時,JVM已經知道有3個線程了。於是,在main線程使用CPU資源執行到for語句的第1次循環以後,JVM就將CPU資源切換給speakCar線程了。線程

  • 問題2:教材366頁Example12_2.java中,爲何將
speakCar.start();

去掉,或者改成設計

carTarget.run();

時,JVM認爲程序中只有兩個線程呢?3d

  • 問題2解決方案:start()方法時新建一個線程的方法,若去掉,則視爲沒有此線程;在carTarget.run();運行過程當中可能被中斷,變成主線程的代碼了,JVM只在主線程與Elephant線程中切換。

代碼託管

上週考試錯題總結

  • 錯題1:接口RowSet繼承了接口ResultSet,能夠調用RowSet中的方法update來填充其數據區。

緣由:能夠調用RowSet中的方法update來填充其數據區,把update填成了populate。對於RowSet中的方法做用掌握得不清楚。調試

理解狀況:已瞭解該方法。code

  • 錯題2:executeUpdate返回的類型是int,表明的含義是受影響的記錄。true

緣由:對於executeUpdate不清楚。blog

理解狀況:已瞭解該方法。

  • 錯題3:下列屬於數據操做語言的是:A.insert和B.update

緣由:對於數據操做語言瞭解不清楚。將select也選作了數據操做語言。

理解狀況:已掌握數據操做語言的基本內容。

其餘(感悟、思考等,可選)

本週學習內容中12章的內容,對於線程的理解更加深刻了。在學習前,對於線程、進程的概念十分混淆,如今也更加明晰了。在學習教材內容的過程當中,線程更接近電腦一些應用程序之類的運行,就不像前幾章十分直白的程序語句,只是針對於一個解決課本題目的程序,本章更利於解決實際的程序運行的問題,更加抽象也更加實用。

相關文章
相關標籤/搜索