java 基礎類庫(IO,集合類,執行緒)
1. java 中有幾種型別的流? JDK 為每種型別的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
- 位元組流 位元組流繼承於 InputStream OutputStream
- 字元流 字元流繼承於 Reader Writer
2.啟動一個執行緒是用 run()還是 start()?
start()方法:用來啟動一個執行緒,這時此執行緒處於就緒狀態,然後通過呼叫此執行緒的run()方法來完成執行緒的執行操作。
run()方法:這只是一個方法,直接呼叫該方法只是把該方法的函式體給執行了一遍,並沒真正啟動一個執行緒。
3.執行緒的基本概念、執行緒的基本狀態以及狀態之間的關係
執行緒,在網路或多使用者環境下,一個伺服器通常需要接收大量且不確定數量使用者的併發請求,為每一個請求都建立一個程序顯然是行不通的,——無論是從系統資源開銷方面或是響應使用者請求的效率方面來看。因此,作業系統中執行緒的概念便被引進了。執行緒,是程序的一部分,一個沒有執行緒的程序可以被看作是單執行緒的。執行緒有時又被稱為輕權程序或輕量級程序,也是 CPU 排程的一個基本單位。
Java 中的執行緒有四種狀態分別是:執行、就緒、掛起、結束。
4.多執行緒有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?
多執行緒有兩種實現方法, 分別是繼承 Thread 類與實現 Runnable 介面。同步的實現方面有兩種, 分別是 synchronized,wait 與 notify,反對使用 stop(),是因為它不安全。它會解除由執行緒獲取的所有鎖定,而且如果物件處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。
suspend()方法容易發生死鎖。呼叫 suspend()的時候,目標執行緒會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何執行緒都不能訪問鎖定的資源,除非被”掛起”的執行緒恢復執行。對任何執行緒來說,如果它們想恢復目標執行緒,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用 suspend(),而應在自己的 Thread 類中置入一個標誌,指出執行緒應該活動還是掛起。若標誌指出執行緒應該掛起,使用 wait()進入等待狀態。若標誌指出執行緒應當恢復,呼叫notify()重新啟動執行緒。
5.集合框架有什麼?
6.同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。
- 同步:上一段程式碼沒的完成,下一段必須等到上一段程式碼完成後才可以執行。如買票排隊
- 非同步:上一段程式碼沒的完成,下一段不必等到上一段程式碼完成就可以執行。如手機發送簡訊。
7.sleep() 和 wait() 有什麼區別?
- sleep() 是指休眠給定的時間,當這個時間達到之後,執行緒會再次醒來。
- wait() 是等待狀態,多長時間不清楚,由另一個執行緒將其喚醒。
8.請寫一個程式的讀寫, 要求用兩種方式一種是低層流另一種是高層流。
import java.io.*;
public class Mystream {
public static void writeFileChar() throws Exception {
//建立字元輸出流類物件和已存在的檔案相關聯。檔案不存在的話,並建立
FileWriter f = new FileWriter("E:\\test.txt");
InputStream is = System.in;
int c = is.read();
while (((char) c) != 'x') {
f.write(c);
c = is.read();
}
f.close();
is.close();
}
public static void writeFileString() throws Exception {
FileWriter f = new FileWriter("E:\\test.txt");
BufferedWriter bwr=new BufferedWriter(f);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String c = bf.readLine();
while (!c.equals("stop")) {
bwr.write(c+"\r\n");
c = bf.readLine();
}
bwr.close();
f.close();
bf.close();
}
public static void readFileChar() throws Exception {
FileReader f = new FileReader("E:\\test.txt");
int c = f.read();
while (c!=-1) {
System.out.print((char)c);
c=f.read();
}
f.close();
}
public static void readFileString() throws Exception {
BufferedReader bf = new BufferedReader(new FileReader("E:\\test.txt"));
String c = bf.readLine();
while (c!=null){
System.out.println(c);
c=bf.readLine();
}
bf.close();
}
public static void main(String[] args) throws Exception{
readFileString();
}
}
相關推薦
Java基礎總結(二)----集合、多執行緒、io、虛擬機器等
Java集合 java集合框架的結構 List介面 List介面通常表示一個列表(陣列、佇列、連結串列、棧等),其中的元素可以重複,常用實現類為ArrayList和LinkedList,另外還有不常用的Vector。另外,LinkedList還
java基礎(17)、集合類(1:Collection)
實例 array 9.png str 列表 println 方式 elements .com 一. 什麽是集合類? 二. Collection接口 2.1 Collection子接口(List接口和Set接口) 2.1 Collection的常用方法 三.
java基礎類庫學習(七.2)執行緒的生命週期
前言 利用java的類/介面建立好使用者執行緒後,我們呼叫執行緒物件的啟動方法,讓執行緒啟動 執行緒的生命週期:新建new 就緒runnable 執行running 阻塞blocked 死亡die 執行緒會在幾種狀態之間改變 新建new 執行緒類通過繼承Thread實現Run
【Java基礎知識】IO流--File類和路徑分隔符
IO流–FIle類和路徑分隔符 1 File類 1.1 File類概述 我們想要操作IO,就必須知道硬碟上檔案的表現形式。File類:IO類包中唯一代表檔案本身的物件,檔案和目錄(資料夾)路徑名的抽象表示形式。File類提供各種方法,我們可以建立、
Java基礎:由JVM記憶體模型詳解執行緒安全
1.前言 最近在研究JVM記憶體模型和Java基礎知識。主要講的是執行緒共享變數與執行緒私有變數以及如何寫出執行緒安全的程式碼。這裡列出一條規則,“類中的成員變數,也叫例項變數,也叫全域性變數,它是非執行緒安全,是所有執行緒共享的變數,定義在方法中的私有變數是執行緒安全的,是每個執行緒私
java 基礎類庫(IO,集合類,執行緒)
1. java 中有幾種型別的流? JDK 為每種型別的流提供了一些抽象類以供繼承,請說出他們分別是哪些類? 位元組流 位元組流繼承於 InputStream OutputStream 字元流 字元流繼承於 Reader Writer 2.啟
Java基礎-19總結IO流,異常try…catch,throws,File類
1:異常(理解) (1)程式出現的不正常的情況。 (2)異常的體系 Throwable |--Error嚴重問題,我們不處理。 |--Exception |--RuntimeException執行期異常,我們需要修正程式碼
Java核心類庫-IO-文件過濾器(FilenameFilter)
return 文件過濾 system sof boolean style 接口 strong family 文件操作過濾器(FilenameFilter): listFiles(FilenameFilter filter )方法 : 實際就相當於: //文件過濾器(Fil
Java核心類庫-IO-字符解碼和編碼操作
編碼 亂碼 .cn 字符 字符串 tro com str 數組 編碼:把字符串轉換為byte數組。 解碼:把byte數組轉換為字符串。 一定要保證編碼和解碼的字符集相同,否則亂碼。 Java核心類庫-IO-字符解碼和編碼操作
Java核心類庫-IO-字節數組流/內存流
sta throws demo print char 字符數 lang java 字節數組 內存流(數組流): 把數據先臨時存在數組中,待會再從數組中獲取出來。 1. 字節內存流:ByteArrayInputStream/ByteArrayOutputStream
Java核心類庫-IO-對象流(實現序列化與反序列化)
.get throws 反序 code row cts new java cep 使用對象流來完成序列化和反序列化操作: ObjectOutputStream:通過writeObject()方法做序列化操作的 ObjectInputStream:通過readObje
Java核心類庫-IO-打印流(PrintStream/PrintWriter)
int div leo obj clas 打印流 println 不換行 pan 打印流,打印數據的,打印流只能是輸出流: PrintStream:字節打印流。 PrintWriter:字符打印流。 對於PrintWriter來說,當啟用字段刷新之後 PrintWrite
Java核心類庫-IO-NIO概述
字符 java 傳統 ont syn 概述 pan spa 數據 NIO:New IO 從JDK1.4開始提出的,新的IO,可以把一塊磁盤文件映射到內存中,我們再去讀取內存中的數據。 存放在java.nio包中 Java NIO(New IO)是Java1.4版本開始引入的
Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改/遍歷/ 集合視圖方法/雙向叠代輸出
順序 所有 collect int oid 代碼 修改 getc entryset Map筆記: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要實現類) : HashedMap / Li
Java基礎篇(三)--- 抽象類,介面,final,單目運算子
多型 ①父類引用指向子類: java允許父類的引用變數引用它的子類的例項(物件) Animal animal = new Cat(); 這種轉換是自動完成的 子類在一定條件下是可以轉換為父類的 ②繼承: 類的單繼承和介面的多繼承,都能體現多型 ③重寫、過載 過載:同一個類的同名函式(方法的引
java常用集合類詳解(有例子,集合類糊塗的來看!)
TreeSet:TreeSet是依靠TreeMap來實現的.TreeSet是一個有序集合,TreeSet中元素將按照升序排列,預設是按照自然排序進行排列,意味著TreeSet中元素要實現Comparable介面.我們可以在構造TreeSet物件時,傳遞實現了Comparator介面的比較器物件.java.ut
Java基礎(14):IO流—理解I/0概念和掌握相關類的作用(附有操作程式碼)
在Java中如果要進行輸出和輸入操作,就需要使用到IO流,例如第一次寫的語句System.out.println("hello,world")就是一個典型的輸出流。IO流是Java的重點知識,除了要理解輸入與輸出的概念,還需要多次編寫程式碼才能更好的理解。IO體系中涉及到的
JAVA基礎複習十五-Collection集合子類-List集合的子類
一、陣列與集合 * 陣列和集合儲存引用資料型別,存的都是地址值 二、集合的由來及集合繼承體系圖 * A:集合的由來 * 陣列長度是固定,當新增的元素超過了陣列的長度時需要對陣列重新定義,太麻煩,java內部給我們提供了集合類,能儲存任意物件,
java基礎隨筆 字符數據類型char的單引號
數據類型 str 開始 基礎 隨筆 oid 數據 運算 結果 public class Love{ public static void main(String[] args){ System.out.println(‘*‘+‘\t‘+‘*‘);
java基礎知識學習--------之枚舉類型(1)
blog 枚舉類型 csdn 相同 名稱 枚舉類 java string pac 枚舉類型的概念: 1 /** 2 * 目的:枚舉類型 3 * @author chenyanlong 4 * 日期:2017/10/22 5 * 網址:http://blo