[JAVA]

Ich erkannte, dass Runnable nicht nur eine Schnittstelle zum Ausführen in einem separaten Thread war. Einführung In der Testclient-App war es erforderlich, nicht nur den Inhalt der Definitionsdatei der Reihe nach zu senden, sondern auch mehrere gleichzeitig. Als ich die "Runnable" -Implementierungsklassen für die Verarbeitung in separaten Threads in eine Liste einfügte und sie in einem separaten Thread implementierte, stellte ich fest, dass sie nacheinander ausgeführt würden, wenn sie der Reihe nach ausgeführt würden.

Inhaltsverzeichnis

  1. Zuallererst
  2. Inhaltsverzeichnis
  3. Jetzt
  4. Fazit

Während jetzt

Ich habe nur "Runnable" als Ausgangspunkt für die Ausführung der Verarbeitung in einem anderen Thread verwendet, aber ich habe festgestellt, dass die Verarbeitung im selben Thread erfolgt, wenn ich nur die Methode "run ()" aufrufe. ..

Runner.java


	public void start() {
		List<Runnable> runnables = new ArrayList<>();
		for (String line : getLines()) {
			runnables.add(createRunnable(line));
		}
		
		log.debug("Gleiche Thread-sequentielle Ausführung");
		runnables.forEach(r -> r.run());

		log.debug("Gleichzeitige Ausführung mehrerer Threads");
		runnables.forEach(r -> new Thread(r).start());
	}

	private String[] getLines() {
		return new String[] {
			"Hello",
			"Hi",
			"How are you",
			"Bye"
		};
	}

	private Runnable createRunnable(String line) {
		//Die auszuführende Verarbeitung hängt vom Inhalt der Zeile ab
		if (line.length() < 5) {
			return () -> process(line, "***");
		}
		else {
			return () -> process(line);
		}
	}

	private void process(String line) {
		log.debug(Thread.currentThread().getId() + ": "+ line);
	}

	private void process(String line, String deco) {
		process(deco + line + deco);
	}

abschließend

Vor kurzem habe ich endlich angefangen, Java 8 zu berühren und lerne. Ich habe mit Java 6 entwickelt, um die Projekte zu vereinfachen, an denen ich beteiligt war. Wir müssen die Art und Weise ändern, wie wir über Klassendesign denken.

Recommended Posts