Zugriff auf Funktionen eines Threads

Hi,
ich habe folgendes Problem. Ich starte einen Thread mehrmals. Diese Thread Klasse besitzt getter Methoden um den aktuellen Status des Vorganges abzufragen. Nun zu meiner Frage. Wie kann ich nun über die Thread Objekte auf die Funktionen dieser Klasse zugreifen. Ich habe mir prinzipell sowas vorgestellt.

int fortschritt1 = Thread1.getFortschritt();
int fortschritt2 = Thread2.getFortschritt();

Danke schonmal für eure Hilfe.
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author Tom
 * 
 */
public class ThreadExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ExecutorService executorService = Executors.newCachedThreadPool();

		Counter counter1 = new Counter();
		Counter counter2 = new Counter();

		executorService.execute(counter1);
		executorService.execute(counter2);

		try {
			TimeUnit.SECONDS.sleep(10L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		counter1.pause();
		counter2.pause();
		System.out.println("Counter1: " + counter1.getCurrentValue());
		System.out.println("Counter2: " + counter2.getCurrentValue());

		try {
			TimeUnit.SECONDS.sleep(10L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		counter2.resume();
		counter1.resume();

		try {
			TimeUnit.SECONDS.sleep(10L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		counter1.stop();
		counter2.stop();

		executorService.shutdown();
	}

	static class Counter implements Runnable {
		int value;

		boolean isStopped;

		Lock lock = new ReentrantLock();

		int getCurrentValue() {
			return this.value;
		}

		void increment() {
			this.value++;
		}

		void pause() {
			lock.lock();
		}

		void resume() {
			lock.unlock();
		}

		void stop() {
			isStopped = true;
		}

		public void run() {
			while (!isStopped) {
				lock.lock();
				System.out.println(Thread.currentThread().getName() + ": "
						+ getCurrentValue());
				increment();
				lock.unlock();
			}
		}
	}
}

Gruss Tom
 
Zurück