當前位置:
首頁 > 知識 > 線程和流的歷史遺留

線程和流的歷史遺留

         bw.write(s);//如果不用nextLine可以bw.write(s+"/n");
bw.newLine;//換行
bw.flush;//刷新

讀寫只用一個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

package com.hanqi.xiancheng;
//當兩個人同時從一張卡上取錢
public class Bank {
public int money=3000;

public void getMoney(String name,int mon){
synchronized(this){
if(money>mon&&money>0){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace;
}
money-=mon;
System.out.println(name+"你好");
System.out.println("取款"+mon);
System.out.println("餘額剩餘:"+money);
}else{
System.out.println(name+"你好");
System.out.println("取款"+mon);
System.out.println("餘額不足");
}
}

}

}

package com.hanqi.xiancheng;

public class TextThread {
public static void main(String[] args) {
MyThread mt=new MyThread;

Thread t1=new Thread(mt);
Thread t2=new Thread(mt);

t1.setName("超人");
t2.setName("神奇女俠");

t1.start;
t2.start;
}

}
class MyThread implements Runnable{
public Bank bank=new Bank;
@Override
public void run {
bank.getMoney(Thread.currentThread.getName,2000);

}
}

線程和流的歷史遺留

啟動線程用start

不能直接調用run方法,

currentThread當前線程

synchronized(this){}或者寫在public與class之間:鎖住當前對象

class MyThread implements Runnable{
public Bank bank=new Bank;
@Override
public void run {
bank.getMoney(Thread.currentThread.getName,2000);

}
}
必須要重寫run方法

同時鎖住兩個對象容易造成死鎖

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

MySQL優化-性能分析與查詢優化
react and redux教程學習實踐,淺顯易懂的實踐學習方法
基於三台主機部署phpwind

TAG:科技優家 |

您可能感興趣

「狗」的歷史和文化
春節的歷史文化
贊皇歷史文化河流的傳說——泜水悲歌
溫情與敬意—中國歷史和傳統文化的現實意義
歷史文化源流
用AR講述歷史 帶給文化遺迹新的生機
藝術、歷史、科學的相似性
銅鏡里的歷史
大隱原創: 安史之亂的歷史大背景
張豈之:文化自信的深厚歷史底蘊
歷史之書:一部紀傳體通史流傳千年《史記》史家之絕唱無韻之離騷
來一場櫻花、文化、歷史、自然、童趣、美食兼備的親子之旅
屍』與『乇』的演變歷史
歷史的眼:世界十大軍事歷史人物
當代文學「歷史化」的歷史觀問題探討——基於政治和革命的視角
鎮江歷史文化名城的「文脈」所在,歷史悠悠
真實的以色列之八:銘記歷史的猶太人大屠殺紀念館
守護歷史的榮光
生命的美麗與歷史的哀愁
藍勇:中國歷史地圖集編繪的歷史軌跡和理論思考