Подскажите, пожалуйста, почему моё решение не является верным? Код:
package com.javarush.task.task17.task1721;

package com.javarush.task.task17.task1721;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/*
Транзакционность
*/

public class Solution {
    public static List<String> allLines = new ArrayList<String>();
    public static List<String> forRemoveLines = new ArrayList<String>();
    public static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws InterruptedException {
        forFirst for1 = new forFirst();
        for1.start();
        for1.join();
        forSecond for2 = new forSecond();
        for2.start();
        for2.join();

        Solution solution = new Solution();
        try {
            solution.joinData();
        } catch (CorruptedDataException e) {
            e.printStackTrace();
        }

        for (int i = 0; i < allLines.size(); i++) {
            System.out.println(allLines.get(i));
        }
    }

    public static class forFirst extends Thread {
        @Override
        public void run() {
            try {
                String firstName = bf.readLine();

                Scanner scannerFirst = new Scanner(new File(firstName));

                while (scannerFirst.hasNextLine()) {
                    allLines.add(scannerFirst.nextLine());
                }

                print();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        public void print() {
            for (int i = 0; i < allLines.size(); i++) {
                System.out.println(allLines.get(i));
            }
        }
    }

    public static class forSecond extends Thread {
        @Override
        public void run() {
            try {
                String secondName = bf.readLine();

                Scanner scannerSecond = new Scanner(new File(secondName));

                while (scannerSecond.hasNextLine()) {
                    forRemoveLines.add(scannerSecond.nextLine());
                }

                print();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        public void print() {
            for (int i = 0; i < forRemoveLines.size(); i++) {
                System.out.println(forRemoveLines.get(i));
            }
        }
    }

    public void joinData() throws CorruptedDataException {
        boolean ok = false;
        for (int i = 0; i < allLines.size(); i++) {
            for (int j = 0; j < forRemoveLines.size(); j++) {
                if (allLines.get(i).equals(forRemoveLines.get(j))) {
                    allLines.remove(forRemoveLines.get(j));
                    ok = true;
                }
            }
        }

        if (!ok) {
            allLines.clear();
            throw new CorruptedDataException();
        }
    }
}