欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java多線程有序讀取同一個(gè)文件

 更新時(shí)間:2019年08月29日 14:14:48   作者:Changshu135  
這篇文章主要為大家詳細(xì)介紹了java多線程有序讀取同一個(gè)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

//定義一個(gè)runnable接口的實(shí)現(xiàn)類
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

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

運(yùn)行程序,我使用了3個(gè)線程

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

 }

文件內(nèi)容截圖

輸出結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot超詳細(xì)講解自動(dòng)配置原理

    SpringBoot超詳細(xì)講解自動(dòng)配置原理

    在進(jìn)行項(xiàng)目編寫前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手
    2022-06-06
  • 在SpringBoot中添加Redis及配置方法

    在SpringBoot中添加Redis及配置方法

    這篇文章主要介紹了在SpringBoot中添加Redis及配置redis的代碼,需要的朋友可以參考下
    2018-10-10
  • SpringBoot整合mybatisplus和druid的示例詳解

    SpringBoot整合mybatisplus和druid的示例詳解

    這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Spring Boot實(shí)現(xiàn)跨域訪問實(shí)現(xiàn)代碼

    Spring Boot實(shí)現(xiàn)跨域訪問實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家介紹了Spring Boot實(shí)現(xiàn)跨域訪問的知識(shí),然后在文中給大家介紹了spring boot 服務(wù)器端設(shè)置允許跨域訪問 的方法,感興趣的朋友一起看看吧
    2017-07-07
  • Java?ThreadPoolExecutor線程池有關(guān)介紹

    Java?ThreadPoolExecutor線程池有關(guān)介紹

    這篇文章主要介紹了Java?ThreadPoolExecutor線程池有關(guān)介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 三種Java求最大值的方法

    三種Java求最大值的方法

    本篇文章給大家總結(jié)了在JAVA中求最大值的三種常用方法,以及代碼做了分享,需要的朋友參考下。
    2018-02-02
  • SpringBoot結(jié)合ElasticSearch實(shí)現(xiàn)模糊查詢的項(xiàng)目實(shí)踐

    SpringBoot結(jié)合ElasticSearch實(shí)現(xiàn)模糊查詢的項(xiàng)目實(shí)踐

    本文主要介紹了SpringBoot結(jié)合ElasticSearch實(shí)現(xiàn)模糊查詢的項(xiàng)目實(shí)踐,主要實(shí)現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮功能,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • java身份證合法性校驗(yàn)并提取身份證有效信息

    java身份證合法性校驗(yàn)并提取身份證有效信息

    這篇文章主要為大家詳細(xì)介紹了java身份證合法性校驗(yàn),并獲取并根據(jù)身份證號(hào)提取身份證相關(guān)信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring Security 中細(xì)化權(quán)限粒度的方法

    Spring Security 中細(xì)化權(quán)限粒度的方法

    這篇文章主要介紹了Spring Security 中細(xì)化權(quán)限粒度的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Spring裝配bean方法實(shí)例總結(jié)

    Spring裝配bean方法實(shí)例總結(jié)

    這篇文章主要介紹了spring裝配bean方法實(shí)例總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論