java przekazanie zmiennej do watku

0

Witam,
I. problem
Mam dwie klasy:

  1. metoda w tej klasie pobiera z bazy danych:
  • id maszyny
  • nazwę maszyny
  • adres sieciowy maszyny
    następnie wywołuje wątek dla każdej znalezionej maszyny (jeśli znajdzie ich 10, to wywoła wątek 10 razy)
  1. w tej klasie metoda run() pinguje komputer na maszynie i wyświetla wynik (w przyszłości będzie bardziej rozbudowana)

Potrzebuje id maszyny, nazwę maszyny, adres sieciowy maszyny przekazać najlepiej tablicą String do wywoływanego wątku.
Proszę o pomoc w rozwiązaniu tego problemu.

II. problem
W jaki sposób przewidujecie wielkość tablicy pod wyniki zapytania do bazy danych? Ja używam tablicy ale to bez sensu tworzenie tablicy na maksymalne wyniki zapytania. Może lepiej użyć ArrayList, lub coś inny sposób ?

Poniżej kod:
1.

package mainProcess;

import java.util.ArrayList;

public class MainStart {

	public static void main(String[] argv) throws Exception {

		String query1 = "SELECT IM_ID, IM_NAME, IM_ADDRESS FROM injectionmachine WHERE IM_Status='1'";

		String[][] resultOfQuery1 = new String[1000][3];
		resultOfQuery1 = queriesSLSdb.ActiveMachines.query(query1);

		String[] injectionMachineData = new String[3];
		for (int i = 1; i <= Integer.parseInt(resultOfQuery1[0][0]); i++) {
			injectionMachineData[0] = resultOfQuery1[i][0];
			injectionMachineData[1] = resultOfQuery1[i][0];
			injectionMachineData[2] = resultOfQuery1[i][0];

			// injectionMachineData[] --> tą tablicę potrzebuję wrzucić do watku
			// ! ! !

			Thread r = new Thread(new ThreadsOfMonitoring());

			r.start();
		}
	}

}
package mainProcess;

public class ThreadsOfMonitoring extends Thread {

	public void run() {

		String ipAddress="192.168.121.221"; // tu potrzebuje wrzucić adres pobrany w pkt 1.
		
		long start = System.currentTimeMillis();
		
			boolean pingTestResult = false;
			
			try {
				pingTestResult = PingTest.pingtester(ipAddress);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(pingTestResult);

		long stop = System.currentTimeMillis();
		System.out.println("PING czas wykonania (w milisekundach): "+ (stop - start));
	}
}
0
  1. Utwórz własny konstruktor i przekaż te wartości w konstruktorze.

  2. Oczywiście, że użyj jakiejś implementacji List. Nawet w C++ ludzie używają std::vector, a nie bawią się w durne tablice. Skąd ty się urwałeś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1