Grundlagen der Programmierung 2 SS 2005 - Datei StackExample.java
class Stack
{
// innere Klasse fuer Listenelemente
static class Node
{
public Node(Object d, Node n)
{
data = d;
link = n;
}
Object data;
Node link;
}
private Node topRef = null;
public synchronized void push(Object elem)
{
topRef = new Node(elem, topRef);
}
public synchronized void pop()
{
if (topRef != null)
topRef = topRef.link;
}
public synchronized Object top()
{
if (topRef != null)
return topRef.data;
else
return null;
}
public boolean empty()
{
return topRef == null;
}
}
class StackUser extends Thread
{
private Stack myStack;
private int rounds, delay, ident;
public StackUser(Stack st, int rd, int del, int id)
{
myStack = st;
rounds = rd;
delay = del;
ident = id;
}
public void run()
{
for (int r = 0; r < rounds; r++)
{
String elem = String.valueOf(r * 100 + ident);
myStack.push(elem);
System.out.println("push " + elem);
try
{
sleep(delay);
}
catch (InterruptedException e)
{
}
}
for (int r = 0; r < rounds; r++)
{
if (!myStack.empty())
{
System.out.println("pop " + (String) myStack.top());
myStack.pop();
}
try
{
sleep(delay);
}
catch (InterruptedException e) {}
}
}
}
class StackExample
{
public static void main(String[] args)
{
Stack s = new Stack();
StackUser u1 = new StackUser(s, 5, 300, 1);
StackUser u2 = new StackUser(s, 5, 500, 2);
u1.start();
u2.start();
}
}
Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 27.05.2005


