1. 程式人生 > >多執行緒+佇列的簡單使用

多執行緒+佇列的簡單使用

以前在專案中很少用到佇列,其實佇列對於解決併發很是重要,今天著手看了相關資料並實際簡單操作,如下: 1.佇列的含義:佇列就是一種特殊的線性表,採用FIFO方式,而棧是LIFO方式。 2.常用的佇列:LinkedList實現了Queue的介面 3.佇列的操作: 賦值:queue.offer(); queue.add(); 取值:queue.poll(); queue.remove(); 其中 add,remove 如果失敗會丟擲異常,而前者會有返回值。 檢視佇列前端資料:queue.element(), queue.peek(); 4.例項操作: A。初始化一個佇列,內部元素為0-50數字 B。啟動100個執行緒同時去取這個佇列的數字,看取數是否衝突。類似100個客戶去秒殺50個商品 package test; import java.util.LinkedList; import java.util.Queue; /** * @author zxh * */ public class Test extends Thread { /* * 初始化一個佇列 */ public static Queue<String> inintQueue(){ Queue<String> queue = new LinkedList<String>(); for(int i = 0;i<50;i++){ queue.offer(String.valueOf(i)); } return queue; } public static void main(String[] args) { Queue<String> queue = inintQueue(); System.out.println(queue); for(int i=0;i<100;i++){ ThreadTest test = new ThreadTest(String.valueOf(i),queue); test.start(); }
} }


package test;
import java.util.LinkedList; import java.util.Queue;
public class ThreadTest extends Thread{
Queue<String> queue = new LinkedList<String>(); String threadFalg = ""; public ThreadTest(String threadFalg,Queue<String> queue){ this.queue = queue; this.threadFalg = threadFalg; } public void run(){ String qu = queue.poll(); System.out.println(">>>thread is:"+threadFalg+" queue is:"+qu); } }