android生产者消费者模式

生产者消费者模式

生产者->仓库->消费者

生产者一直在生产放入仓库中。消费者一直从仓库中取出来消费。线程同步

package shengchan.xiaofei;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ShengchanxiaofeiActivity extends Activity {
    /** Called when the activity is first created. */
	Button proBtn;
	Button comBtn;
	private final String TAG="scxf";
	PublicResource resource;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        init();
        
        
    }
    
    private void init(){
    	proBtn=(Button)findViewById(R.id.button1);
    	comBtn=(Button)findViewById(R.id.button2);
    	
    	proBtn.setOnClickListener(new click());
    	comBtn.setOnClickListener(new click());
    	
    	 resource = new PublicResource();
    }
    
    class click implements OnClickListener{
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		switch (v.getId()) {
			case R.id.button1:
				Log.e(TAG, "button1-->onclick--生产开始");
				new Thread(new ProducerThread(resource)).start();
				
				break;
			case R.id.button2:
				Log.e(TAG, "button2-->onclick--消费开始");
				new Thread(new ConsumerThread(resource)).start();
				
				break;

			}
    		
    		
    		
    	}
    }
    
    public class PublicResource {  
        private int number = 0;  
      
        /** 
         * 增加公共资源 
         */  
        public synchronized void increace() {  
            
        	
        	while (number != 0) {  
                try {  
                    wait();  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
            }  
            number++;  
            System.out.println("生产了->"+number);  
            notify();  
            
            
        }  
      
        /** 
         * 减少公共资源 
         */  
        public synchronized void decreace() {  
        	
            while (number == 0) {  
                try {  
                    wait();  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
            }  

            number--;  
            System.out.println("消费了->"+number);  
            notify();  
        }  
    }  
    
    public class ProducerThread implements Runnable {  
        private PublicResource resource;  
      
        public ProducerThread(PublicResource resource) {  
            this.resource = resource;  
        }  
      
        @Override  
        public void run() { 
        	while (true) {
            resource.increace();  
        }  
        }
    }  
    /** 
     * 消费者线程,负责消费公共资源 
     */  
    public class ConsumerThread implements Runnable {  
        private PublicResource resource;  
      
        public ConsumerThread(PublicResource resource) {  
            this.resource = resource;  
        }  
      
        @Override  
        public void run() {  
        	while (true) {
        		 resource.decreace();  
				
			}
           
        }  
    }  
    
    
    
}

本文配套源码下载地址: http://download.csdn.net/detail/kyrinleo/6843017

本文参考:http://blog.csdn.net/shijinupc/article/details/7250407


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值