本人刚参加工作,面试的时候遇四道笔试题,其中就有这道多线程有序读取文件的题目,初看时拿不准,感觉会,又感觉不会。于是放弃了这道题,今天闲下来好好做一遍。
//定义一个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实现多线程的同步
synchro