亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

长兴县| 遵化市| 西平县| 大港区| 景东| 辰溪县| 泰和县| 静海县| 德庆县| 奉贤区| 海南省| 达尔| 凤城市| 威远县| 应用必备| 灵宝市| 仁化县| 河北区| 晋城| 连城县| 威远县| 武威市| 类乌齐县| 桓仁| 那坡县| 会东县| 新兴县| 永福县| 夏津县| 正蓝旗| 武定县| 西峡县| 高阳县| 榕江县| 石台县| 乡宁县| 桂平市| 商都县| 湘潭市| 方山县| 南靖县|