91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java多線程有序讀取同一個文件

發布時間:2020-10-03 22:34:35 來源:腳本之家 閱讀:410 作者:Changshu135 欄目:編程語言

本人剛參加工作,面試的時候遇四道筆試題,其中就有這道多線程有序讀取文件的題目,初看時拿不準,感覺會,又感覺不會。于是放棄了這道題,今天閑下來好好做一遍。

//定義一個runnable接口的實現類
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RunnableImpl implements Runnable{
 //定義文件讀取的游標位置
 private static int now=0;
 //定義即將被讀取的文件
 static File file=new File("source/error.log");
 //使用io包中的RandomAccessFile類,支持文件的隨機訪問
 static RandomAccessFile raf=null;
 //定義每次讀取的字節數
 final static int len=256;
 
 RunnableImpl() throws IOException{
 raf=new RandomAccessFile(file, "rw");
 }
 @Override
 public void run() {
 while(true){
 try {
 //synchronized實現多線程的同步
 synchronized (raf) {
 //將文件內容讀取到b字節數組中
 byte[] b = new byte[len];
 //設置游標位置
 raf.seek(now);
 int temp=raf.read(b);
 //如果沒讀取到,就結束線程
 if(temp==-1){
  return ;
 }
 //設置游標偏移量
 now+=temp;
 //打印文件內容
 System.out.println(new String(b));
 }
 
 
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 }
 
 }
}

運行程序,我使用了3個線程

public static void main(String[] args) throws IOException {
 RunnableImpl run=new RunnableImpl();
 new Thread(run).start();
 new Thread(run).start();
 new Thread(run).start();

 }

文件內容截圖

java多線程有序讀取同一個文件

輸出結果:

java多線程有序讀取同一個文件

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

小金县| 兴义市| 彭州市| 广水市| 尖扎县| 荃湾区| 正安县| 临西县| 淳化县| 鹤山市| 徐汇区| 肇源县| 察隅县| 盱眙县| 嘉义市| 清丰县| 伊吾县| 分宜县| 南安市| 海南省| 镇巴县| 定襄县| 吉林市| 曲阜市| 泽普县| 北安市| 武川县| 平泉县| 和平区| 南投市| 资源县| 西平县| 安泽县| 自贡市| 马鞍山市| 萝北县| 沁源县| 阿克苏市| 永州市| 固镇县| 大足县|