Hey Leute,
ich bin momentan dabei ein kleines Programm zu schreiben und hänge bei der richtigen Übergabe von einer BlockingQueue. Außerdem kann ich meine Threads nicht durch die Methode start() starten.
ich bin momentan dabei ein kleines Programm zu schreiben und hänge bei der richtigen Übergabe von einer BlockingQueue. Außerdem kann ich meine Threads nicht durch die Methode start() starten.
Java:
package de.sportreporter;
import java.awt.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import sun.misc.Queue;
/**
* Represents a server consuming comments of
* sport reporters, updating the output.
*
*
*/
public class LiveTicker implements Runnable {
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
BlockingQueue<String> puffer = getEventList();
System.out.println(puffer);
puffer.poll();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @return returns the list containing the comments
*/
public synchronized BlockingQueue<String> getEventList() {
BlockingQueue<String> eventList = new LinkedBlockingQueue<String>();
return eventList;
}
public static void main(String[] args){
LiveTicker liveTicker = new LiveTicker();
SportReporter reporter1 = new SportReporter("München vs. Dortmund", liveTicker.getEventList());
SportReporter reporter2 = new SportReporter("Berlin vs. Hamburg", liveTicker.getEventList());
SportReporter reporter3 = new SportReporter("Stuttgart vs. Köln", liveTicker.getEventList());
liveTicker.start();
reporter1.start();
}
}
Java:
package de.sportreporter;
import java.util.Random;
import java.util.concurrent.BlockingQueue;
/**
* Represents a reporter posting comments of the current match to his
* live ticker.
*
*
*/
public class SportReporter implements Runnable {
private final String match;
BlockingQueue<String> eventList;
Random random;
/**
* Sport reporter used for comment a match.
* @param match name of the match (e.g. names of the playing teams)
* @param eventList list for posting the comments
*/
public SportReporter(String match, BlockingQueue<String> eventList) {
this.match = match;
this.eventList = eventList;
}
@Override
public void run() {
while (true){
try {
Thread.sleep(random.nextInt(6000));
int pick4 = new Random().nextInt(SoccerEvent.values().length);
eventList.add(SoccerEvent.values()[pick4].toString());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Java:
package de.sportreporter;
/**
* Enum class containing all possible football match events.
*
*
*/
public enum SoccerEvent {
FOUL("Faulspiel"), GOAL("Tor"), OFFSIDE("Abseits"), CORNER("Eckball"), TACKLING("Zweikampf");
private final String catchword;
SoccerEvent(String catchword){
this.catchword = catchword;
}
/**
* @return returns the German word for the event
*/
public String getCatchword() {
return catchword;
}
}