我正在尝试同时使用Threads读取更多文件,但出现此错误:“线程“ main”中的异常-ReadFileMonthYear(Thread).start()行:不可用“。我将代码包含在while(true)循环中。第一次迭代后,应用程序结束。我的想法是为while循环使用Thread主线程,并为一个任务创建三个线程。现在,我只完成了一项测试我的想法的任务。
我不是每次都管理线程,也不知道哪里出了错。
public void readFiles() {
ReadFileMonthYear ma=new ReadFileMonthYear(pathLog,nFileLog);
while(true)
{
try
{
ma.start();
try {
ma.join();
System.out.println("Are two byte arrays equal ? : " + ma.isBlnResult());
}
catch (InterruptedException e) {
System.out.println("equal "+e.getMessage());
}
finally {
ma.interrupt();
}
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
@Data
public class ReadFileMonthYear extends Thread{
private static final int YEAR = 2019;
private byte[] bufferPrevious = null;
private boolean blnResult = false;
private String pathLog;
private int nFileLog;
public ReadFileMonthYear(String pathLog,int nFileLog)
{
this.pathLog=pathLog;
this.nFileLog=nFileLog;
}
@Override
public void run() {
int month;
String monthTrunc;
byte[] buffer;
byte[] bufferConcat;
LocalDate date=LocalDate.now();
month=date.getMonthValue();
DateFormatSymbols dfs = new DateFormatSymbols(Locale.ITALY);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream( );
for(int i=0;i<nFileLog;i++)
{
int m=(date.getMonthValue()-i);
String me=dfs.getMonths()[m-1];
monthTrunc=me.substring(0, 3).toLowerCase();
Path path = Paths.get(this.getPathLog()+String.valueOf(monthTrunc)+"_"+String.valueOf(YEAR)+".csv");
try
{
buffer=Files.readAllBytes(path);
outputStream.write(buffer);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
bufferConcat=outputStream.toByteArray( );
// for (int i = 0; i < bufferConcat.length; i++){
// System.out.print((char) bufferConcat[i]);
// }
blnResult = Arrays.equals(bufferConcat,bufferPrevious);
this.setBufferPrevious(bufferConcat);
}
}
我正在调试代码,但是什么也没有。