中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

莆田市| 巨鹿县| 尤溪县| 吴旗县| 和田市| 山西省| 浪卡子县| 海口市| 沈丘县| 旌德县| 图片| 三亚市| 新田县| 阜宁县| 惠水县| 依兰县| 赤水市| 永清县| 望城县| 长阳| 伊川县| 昭平县| 皋兰县| 明溪县| 绥宁县| 澄迈县| 精河县| 临夏县| 阳高县| 维西| 嘉峪关市| 毕节市| 贵阳市| 渑池县| 武夷山市| 盱眙县| 高平市| 夏河县| 邹城市| 郑州市| 翼城县|