zoukankan      html  css  js  c++  java
  • 多线程学习——消费者生产者(2)

    package com.daicy.ProducerConsumer;
    
    import java.util.concurrent.LinkedBlockingQueue;
    
    public class DLinkedBlockingQueue<E> implements IDStack<E> {
    
    	private LinkedBlockingQueue stack = new LinkedBlockingQueue();
    
    	@Override
    	public E push(E item) throws InterruptedException {
    		// TODO Auto-generated method stub
    		stack.put(item);
    		return item;
    	}
    
    	@Override
    	public E pop() throws InterruptedException {
    		// TODO Auto-generated method stub
    		return (E) stack.take();
    	}
    
    }
    
    package com.daicy.ProducerConsumer;
    
    import java.util.Stack;
    
    public class DStack<E> implements IDStack<E> {
    	private Stack stack = new Stack();
    
    	public synchronized E push(E item) {
    		stack.push(item);
    		notify();
    		return item;
    	}
    
    	public synchronized E pop() throws InterruptedException {
    		while (stack.size() == 0) {
    			this.wait();
    		}
    		return (E) stack.pop();
    	}
    
    }
    

    package com.daicy.ProducerConsumer;
    
    public interface IDStack<E> {
    
    	public E push(E item) throws InterruptedException;
    
    	public E pop() throws InterruptedException;
    
    }
    

    package com.daicy.ProducerConsumer;
    
    public class Mantou {
    	private int id;
    
    	Mantou(int id) {
    		this.id = id;
    	}
    
    	public String toString() {
    		return "Mantou :" + id;
    	}
    }
    

    package com.daicy.sequence;
    
    public class SafeSequence {
    	private static int value;
    
    	public static synchronized int getNext() {
    		return value++;
    	}
    }
    


  • 相关阅读:
    hdu 5112 A Curious Matt (水题)
    hdu 5464 Clarke and problem(dp)
    (2)线程优先级、线程安全
    (1)进程与线程
    并发与并行
    (5) 守护线程与线程阻塞
    java线程中断2
    sleep()和wait()的区别
    java线程中断
    java创建线程的三种方式及其对比
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959313.html
Copyright © 2011-2022 走看看