Witam, mam pytanie czytam z lokel socketa w osobnym wątku gdy cokolwiek przyjdzie

 if(socket.Connect())
        {
            Globals.isRun=true;
            try{

                while (Globals.isRun) {
                       socket.GetSocketData(readJson);
                }
            }
            catch(Exception e)
            {
                Globals.isRun=false;
            }
        }

Funkcja GetSocketData:

   public void GetSocketData(Executor save ){

           
              if(socket==null)
                  Connect();
              byte[] buffer = new byte[63335];
              String str;

              try {
                  InputStream inputStream = null;

                  inputStream = socket.getInputStream();
                  while(true) {
                      int count = inputStream.read(buffer);
                      if(count>0)
                      {
                          str= new String(Arrays.copyOfRange(buffer, 0, count));
                          System.out.println("w wątku: " + str);
                          save.doing( str );
                          
                      }
                  }


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

W programie(który jest biblioteką dołączaną do programu klienta) rozmawiam z urządzeniem z którym gadam po sockecie (jakieś strukturki w json) i natknęłam się na problem, tzn. czasami przychodzi żądanie z urządzenia łapie je i przesyłam do klienta on mi odsyła i wysyłam odpowiedź do urządzenia (pętla czytania z local socket musi chodzić cały czas gdyż nie wiem kiedy urządzenie wyśle jakieś żądanie i to wg. mnie jest ok), ale jest też drugi przypadek, klient wysyła zapytanie do urządzenia (przez moją bibliotekę) czyli ja przesyłam dalej do urządzenia i ono mi coś odsyła i ja wiem co ma mi odesłać tylko teraz nie wiem jak to złapać gdyż cały czas czytam na osobnym wątku z localsocketa (mógł bym zmienić funkcję czytająca z socketa by zwracała true gdy złapie strukturę z urządzenia ale wtedy nie będzie ona mogła kręcić się cały czas a to jest konieczne). Czy macie jakieś pomysły ?