How to use ConcurrentLinkedQueue

ConcurrentLinkedQueue の使い方。

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

public class HelloConcurrentLinkedQueue {
	private static Queue<MyObject> mQueue = null;
    public static void main(String[] args) {
    	mQueue = new ConcurrentLinkedQueue<MyObject>();
    	Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
				while (true) {
					mQueue.offer(new MyObject("test1"));
					try {Thread.sleep(300);}
					catch (InterruptedException e) {}
				}
			}
    	});
    	Thread t2 = new Thread(new Runnable() {
			@Override
			public void run() {
				while (true) {
					mQueue.offer(new MyObject("test2"));
					try {Thread.sleep(300);}
					catch (InterruptedException e) {}
				}
			}
    	});
    	Thread t3 = new Thread(new Runnable() {
			@Override
			public void run() {
				while (true) {
					if (mQueue.isEmpty())
						continue;
					MyObject obj = mQueue.poll();
					System.out.println(obj.getStr());
					try {
						Thread.sleep(300);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
    	});
    	t1.start();
    	t2.start();
    	t3.start();
    	System.out.println("End.");
    }
}

class MyObject {
	private String mStr = null;
	
	public MyObject(String str) {
		mStr = str;
	}
	
	public String getStr() {
		return mStr;
	}
}