I'm having trouble running these two threads in Java. I have two methods in the client class and in each method they both have a socket of different ports but when I run the client, i see the error for a split second of one of the threads but the other one that sends the file over works.
Any help?
ClientApp.java
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
    Thread getFileThread = new Thread() {
        public void run() {
            Client client = new Client();
            try {
                client.getTheFile("girlwithmask.jpg");
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    Thread getListOfFilesThread = new Thread() {
        public void run() {
            Client client = new Client();
            ArrayList<String> listOfFiles = null;
            try {
                listOfFiles = client.getFileList();
                System.out.println(listOfFiles.get(1));
                notify();
            } catch (ClassNotFoundException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    getListOfFilesThread.start();
    getFileThread.start();
}
Client.java
    public class Client {
        private static final int PORT = 2665;
        private static String HOST = "localhost";
        Client() {
        }
        public void getTheFile(String filename) throws UnknownHostException, IOException {
            filename = "girlwithmask.jpg";  ///this is temporary
            int filesize = 5000000;   //buffer size 5mb
            int bytesRead;
            int currentTotalNumberOfBytes = 0;
            //connect to port on server - server waits for this after running socket.accept() in the Server class
            Socket socket = new Socket(HOST, PORT);
            byte[] byteArray = new byte[filesize];   //create a byte array of 5mb
            InputStream inputStream = socket.getInputStream();  //channel to to server
            FileOutputStream fileOutStream = new FileOutputStream("myClientFiles/" + filename);
            BufferedOutputStream bufferOutStream = new BufferedOutputStream(fileOutStream);
            bytesRead = inputStream.read(byteArray, 0, byteArray.length);
            currentTotalNumberOfBytes = bytesRead;
            do { //read till the end and store total in bytesRead and add it to currentTotalNumberOfBytes
                bytesRead = inputStream.read(byteArray, currentTotalNumberOfBytes, (byteArray.length - currentTotalNumberOfBytes));
                if (bytesRead >= 0) {
                    currentTotalNumberOfBytes += bytesRead;
                }
            } while (bytesRead > -1); // when bytesRead == -1, there's no more data left and we exit the loop
            bufferOutStream.write(byteArray, 0, currentTotalNumberOfBytes); //write the bytes to the file
            bufferOutStream.flush();
            bufferOutStream.close();
            socket.close();
        }
        public ArrayList<String> getFileList() throws UnknownHostException, IOException, ClassNotFoundException {
            Socket socket = new Socket("localhost", 9999);
            ArrayList<String> titleList = new ArrayList<String>();
            ObjectInputStream objectInput = new ObjectInputStream(socket.getInputStream());
            Object object = objectInput.readObject();
            titleList = (ArrayList<String>) object;
            // System.out.println(titleList.get(2));
            return titleList;
        }
    }
I'm not sure what is going on here. Been working with this for a couple of hours.
 
     
     
    