线程和流的历史遗留
讀寫只用一個while就可以
類名和方法名不能相同
package keshang;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; //邊讀邊寫緩沖流 public class BufferRW {public static void main(String[] args) {File file1=new File("E://新建文本文檔1.txt");File file=new File("E://新建文本文檔.txt");Reader reader=null;Writer writer=null;try {reader = new FileReader(file);} catch (FileNotFoundException e) {e.printStackTrace();}try {writer= new FileWriter(file1);} catch (IOException e1) {e1.printStackTrace();}BufferedWriter bw=new BufferedWriter(writer);BufferedReader br=new BufferedReader(reader);String s=null;try {while((s=br.readLine())!=null){System.out.println(s);bw.write(s);bw.newLine();//換行 bw.flush();}} catch (IOException e) {e.printStackTrace();}try {br.close();bw.close();} catch (IOException e) {e.printStackTrace();}} }
1, 線程的概念
一個程序中的方法有幾條執行路徑, 就有幾個線程
2, 線程的創建:
兩種方式:
1, 繼承Thread類
class TestThread extends Thread {......}
2, 實現Runnable接口, 然后作為參數傳入到Thread類的構造方法中
class TestThread implements Runnable {......}
線程的啟動:
調用線程類中的start()方法, 不能直接調用run()方法, 直接調用run()方法那叫方法調用, 不是啟動線程
3, 線程常用方法
isAlive()
判斷線程是否還活著, 調用start()之前和終止之后都是死的, 其他的都是活的
interrupt()
停止線程
getPriority()
setPriority()
設置優先級, 優先級的概念: 誰的優先級高, 誰執行的時間就多
Thread里面的默認優先級:
Thread.MIN_PRIORITY = 1
Thread.MAX_PRIORITY = 10
Thread.NORM_PRIORITY = 5
Thread.sleep(long millions)
將程序暫停一會
join()
合并線程
yield()---禮讓
讓出CPU執行其他線程
wait()---簡單了解
notify()---簡單了解
notifyAll()---簡單了解
4, 線程同步
synchronized
啟動線程用start()
不能直接調用run方法,
currentThread()當前線程
synchronized(this){}或者寫在public與class之間:鎖住當前對象
同時鎖住兩個對象容易造成死鎖
轉載于:https://www.cnblogs.com/NCL--/p/7274578.html
總結
- 上一篇: 北交所概念股票代码
- 下一篇: 中信信用卡状态异常是什么意思