⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ringbuffer.java

📁 一个很好的JAVA聊天室系统 可以在课堂里实践并且进行聊天
💻 JAVA
字号:
class RingBuffer                              //加互斥锁的缓冲区
{
    static int MAXSIZE = 6;
    private int[] rb = new int[11];
    private int head=0, tail=-1;

    private boolean rbfull() {
       if (((tail+1) % MAXSIZE) == head) return true;
       else return false;
    }
    private boolean rbempty() {
       if (tail == head) return true;
       else return false;
    }

    synchronized void put(int i)
    {
        while (rbfull())                   //当value不空时,等待
        {
            try
            {
                 this.wait();              //等待
            }
            catch(InterruptedException e)
            {
                 System.out.println(e.getMessage());
            }
        }
        rb[(++tail) % MAXSIZE] = i;
        notify();                          // 唤醒其他等待线程
    }
    synchronized int get()
    {
        while (rbempty())                    //当value空时,等待
        { 
            try
            {
                 this.wait();
            }
            catch(InterruptedException e)
            {
                 System.out.println(e.getMessage());
            }
        }        
        notify();
        return rb[(++head) % MAXSIZE];                      
    }
}
class Sender extends Thread               //发送线程
{
    private RingBuffer bf;
    public Sender(RingBuffer bf)
    {
        this.bf = bf;
    }
    public void run( )
    {
        for (int i=1;i<10;i++)
        {
            bf.put( i );
            System.out.println("Sender  put : " + i );
        }
    }
    public static void main (String args[])
    {
        RingBuffer bf = new RingBuffer();
        (new Sender(bf)).start();
        (new Receiver(bf)).start();
    }
}
class Receiver extends Thread             //接受线程
{
    private RingBuffer bf;
    public Receiver(RingBuffer bf)
    {
        this.bf = bf ;
    }
    public void run()
    {
        for (int i=1; i<10;i++)
            System.out.println("\t\t     Receiver get : " + bf.get()) ;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -