Universität Paderborn - Home Universität Paderborn
Die Universität der Informationsgesellschaft

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