线程“主”中的异常-ReadFileMonthYear(Thread).start()行:不可用

时间:2019-10-18 14:28:00

标签: java multithreading

我正在尝试同时使用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);

    }



}

我正在调试代码,但是什么也没有。

0 个答案:

没有答案