1. 程式人生 > >20165312 2017-2018-2《Java程序設計》第9周學習總結

20165312 2017-2018-2《Java程序設計》第9周學習總結

https 完成 協議 分享 name malformed 組合 使用方法 source

20165312 2017-2018-2《Java程序設計》第9周學習總結

上周錯題總結

1.進程的基本狀態有:新建、運行、阻塞、死亡。

A . true
B . false

解析:A

這道題目我在做的時候看書上的說法是新建的線程在他的一個完整的生命周期內要經歷4種狀態:新建、運行、中斷和死亡。所以我就選擇了B,但是我沒有仔細閱讀題幹,題幹中說的是線程而非進程。

我又翻書重新看了一遍進程和線程的定義以及區別。進程是程序的一次動態執行過程,它對應了從代碼加載、執行至執行完畢的一個完整過程。線程是比進程更加小的執行單位,一個進程在其執行過程中,會產生多個線程。

我在網上查找了進程的基本狀態的相關內容,進程共有五種基本狀態。

創建狀態:進程在創建時需要申請一個空白PCB,向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態稱為創建狀態

就緒狀態:進程已經準備好,已分配到所需資源,只要分配到CPU就能夠立即運行
執行狀態:進程處於就緒狀態被調度後,進程進入執行狀態

阻塞狀態:正在執行的進程由於某些事件(I/O請求,申請緩存區失敗)而暫時無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用

終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行

技術分享圖片

程結束後,JVM結束Java應用程序

D . Java語言使用Thread類及其子類對象來表示線程

解析:AD

這道題目我原來選的就是AD,題目答案錯誤。C選項:如果main方法中沒有創建其他的線程,那麽當main方法執行完最後一個語句後,JVM就會結束Java應用程序;如果main方法中又創建了其他的線程,那麽JVM就要在主線程和其他線程之間輪流切換。

教材學習內容總結

  • URL類是java.net包中的一個重要的類,URL的實例封裝著一個統一資源定位符(Uniform Resource Locator),使用URL創建對象的應用程序稱作客戶端程序
  • URL對象最基本的信息:協議、地址、資源
  • 創建一個URL對象

public URL(String spec) throws MalformedURLException


public URL(String protocol, String host,String file) throws MalformedURLException

  • 讀取URL中的資源:
    URL對象調用 InputStream openStream()
    返回一個輸入流,該輸入流指向URL對象所包含的資源
  • Internet上的主機的兩種方式表示地址:域名、IP地址
  • 獲取地址
  • Internet上主機的地址:
    • InetAddress類的靜態方法getByName(String s);
    • 獲得一個InetAddress對象,該對象含有主機地址的域名和IP地址
  • 獲取本地機的地址:通過InetAddress類的靜態方法getLocalHost()
  • 套接字:IP地址標識Internet上的計算機,端口號標識正在計算機上運行的進程(程序)。端口號被規定為一個16位的0~65535之間的整數,端口號與IP地址的組合得出一個網絡套接字。當兩個程序需要通信時,它們可以通過使用Socket類建立套接字對象並連接在一起。
  • 建立連接到服務器的套接字對象:

    try{  Socket mysocket=newSocket(“http://192.168.0.78”,1880);
    }
    catch(IOException e) {} 
  • mysocket相關的方法
  • getInputStream()獲得一個輸入流
  • getOutputStream()獲得一個輸出流
  • getInputStream()得到的輸入流接到另一個DataInputStream數據流上
  • getOutputStream()得到的輸出流接到另一個DataOutputStream數據流上
  • 服務器必須建立一個ServerSocket對象,該對象通過將客戶端的套接字對象和服務器端的一個套接字對象連接起來,從而達到連接的目的

    try{  ServerSocket  serverForClient =new ServerSocket(2010);
    }
    catch(IOException e){} 
  • try{ Socket sc= serverForClient .accept(); }
    catch(IOException e){}
    ```
  • 接收客戶的套接字連接:accept()方法會返回一個和客戶端Socket對象相連接的Socket對象
  • 客戶端的套接字獲得的輸入\輸出流和服務器端的套接字獲得的輸出\輸入流互相連接.
  • 使用Socket類不帶參數的構造方法Socket()創建一個套接字對象,該對象需調用

    public void connect(SocketAddress endpoint) throws IOException
  • 請求和參數SocketAddress指定地址的套接字建立連接
  • 為了使用connect方法,可以使用SocketAddress的子類InetSocketAddress創建一個對象,InetSocketAddress的構造方法是:
    InetSocketAddress(InetAddress addr, int port)
  • 基於UDP通信的基本模式是:
    • 1.將數據打包,稱為數據包(好比將信件裝入信封一樣),然後將數據包發往目的地。
    • 2.接受別人發來的數據包(好比接收信封一樣),然後查看數據包中的內容。
  • 用DatagramPacket類創建一個對象,稱為數據包
  • DatagramPacket的以下兩個構造方法創建待發送的數據包:
    DatagramPacket(byte data[],int length,InetAddtress address,int port)
    DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
  • 用DatagramSocket類的不帶參數的構造方法:DatagramSocket()創建一個對象,該對象負責發送數據包。

    DatagramSocket  mail_out=new DatagramSocket();
    mail_out.send(data_pack); 
  • 接受數據包:
  • DatagramSocket的另一個構造方法DatagramSocket(int port)創建一個對象,其中的參數必須和待接收的數據包的端口號相同

    DatagramSocket mail_in=new DatagramSocket(端口號); 
  • 然後對象mail_in使用方法receive(DatagramPacket pack)接受數據包。
  • 用 DatagramPack類的另外一個構造方法: DatagramPack(byte data[],int length)創建一個數據包,用於接收數據包

    byte data[]=new byte[100];
     int length=90;
           DatagramPacket pack=new DatagramPacket(data,length);
     mail_in.receive(pack); 
  • 遠程對象:
    駐留在(遠程)服務器上的對象是客戶要請求的對象,稱作遠程對象。
  • 代理的特點是它與遠程對象實現了相同的接口。
  • 存根(Stub):一種特殊的字節碼,並讓這個存根產生的對象為作為遠程對象的代理
  • Remote接口:RMI為了標識一個對象是遠程對象,即可以被客戶請求的對象,要求遠程對象必須實現java.rmi包中的Remote接口

代碼托管

參考資料

進程五種基本狀態

20165312 2017-2018-2《Java程序設計》第9周學習總結