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