zoukankan      html  css  js  c++  java
  • 多线程的并发运行应用(生产者消费者模式)

     
    
    

    在实际的开发中我们为了提高CPU的利用率,也提高程序的运行效率,我们常常使用多线程进行对数据进行并发处理。以下我举一个多线程并发运行的实例,大致意思就是

    一个简单的生产者消费者模式,二个线程进行存数据。一个线程进行取数据。

    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.BlockingQueue;
    
    public class BlockingQueueTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		final BlockingQueue queue = new ArrayBlockingQueue(3);
    
    		for (int i = 0; i < 2; i++) {
    			new Thread(new Runnable() {
    
    				@Override
    				public void run() {
    					while (true) {
    						try {
    							Thread.sleep((long) Math.random() * 1000);
    							System.out.println(Thread.currentThread().getName()
    									+ " 准备放数据 ");
    							queue.put(1);
    							System.out.println(Thread.currentThread().getName()
    									+ " 队列中有数据 " + queue.size() + " 个");
    						} catch (InterruptedException e) {
    							e.printStackTrace();
    						}
    					}
    				}
    			}).start();
    
    		}
    		new Thread(new Runnable() {
    
    			@Override
    			public void run() {
    				while (true) {
    					try {
    						Thread.sleep((long) Math.random() * 1000);
    						System.out.println(Thread.currentThread().getName()
    								+ " 准备取数据 ");
    						queue.take();
    						System.out.println(Thread.currentThread().getName()
    								+ " 队列中剩余数据 " + queue.size() + " 个");
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		}).start();
    	}
    }
    
    能够自己实际測试一下。能够执行。

    自己能够查看结果即明确多线程的应用

  • 相关阅读:
    Ubuntu 杂音 alsa*
    安装YouCompleteMe
    vimrc
    Linux Windows 修改键盘映射
    VMware Workstation+Linux+Xshell+Xftp+MySQL+SQLyog 配置
    leetcode Merge Intervals
    leetcode Remove Duplicates from Sorted Array II
    用栈实现二叉树的非递归中序遍历
    nth_element 测试程序
    Windows 程序设计
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6881768.html
Copyright © 2011-2022 走看看