并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用的实例

来源:互联网 发布:sem优化方案 编辑:程序博客网 时间:2024/06/05 05:35
package com.example.myapp2;


import java.io.UnsupportedEncodingException;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;


import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;


public class MainActivity extends Activity {


private int i = 60000;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

  //  BlockingQueue  queue = new ArrayBlockingQueue(102400);


   // BlockingQueue<byte[]> queue = new ArrayBlockingQueue(102400);


LinkedBlockingQueue queue = new LinkedBlockingQueue(10240);


Producer producer = new Producer(queue);
Consumer consumer = new Consumer(queue);


new Thread(producer).start();
new Thread(consumer).start();


// Thread.sleep(4000);


}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


public class Producer implements Runnable {


protected BlockingQueue queue = null;


public Producer(BlockingQueue queue) {
this.queue = queue;
}


public void run() {
try {


while (true) {
byte[] buffer=null;
String str = "now time qty is :"+String.valueOf(i);
try {
buffer = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


queue.put(buffer);
//Thread.sleep(10);
i--;
}


} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


public class Consumer implements Runnable {


protected BlockingQueue queue = null;


public Consumer(BlockingQueue queue) {
this.queue = queue;
}


public void run() {
try {
while (true) {

byte[] buffer=(byte[]) queue.take();
String str="";
try {
str=new String(buffer,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//System.out.println(queue.take());
System.out.println(str);
}
// System.out.println(queue.take());
// System.out.println(queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


}
0 0
原创粉丝点击