import java.util.*;
import java.io.*;

public class Main 
{
static LinkedList<Object> list=new LinkedList<>();
final Object lock = new Object();
static int max;

public  void put(Object obj)
{
    synchronized(lock)
    {
        if(list.size()>=max)
        {
            try
            {
                lock.wait();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
        list.add(obj);
        lock.notify();
    }
}

public Object take()
{
    synchronized(lock)
    {
        if(list.size()<=0)
        {
            try
            {
                lock.wait();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
        lock.notify();
        return list.pop();
    }
}
 public static void main(String[] args)
 {
     max=5;
     Main m=new Main();

     Thread t1=new Thread(
    new Runnable()
    {
         public void run()
         {
             m.put("a");
             m.put("b");
             m.put("c");
             m.put("d");
             m.put("e");
             m.put("f");
         }
    });
     t1.start();
     try
     {
         Thread.sleep(1000);
         System.out.println("当前容器的大小:"+list.size());
     }
     catch(Exception e)
     {
         e.printStackTrace();
     }
     Thread t2=new Thread(
    new Runnable()
    {
         public void run()
        {
            Object o = m.take();
            Object j = m.take();
            System.out.println(o+""+j);
        }
        });
            t2.start();
        try
        {
        Thread.sleep(10);
        System.out.println(list.size());
        }
        catch(Exception e)
        {
            e.printStackTrace();
            System.out.println("当前容器的大 
    小:"+list.size());
        } 
 }     
 }