溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么實現Thread隊列

發布時間:2021-07-01 16:52:42 來源:億速云 閱讀:272 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Java中怎么實現Thread隊列,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Java Thread隊列一直是我們需要掌握的代碼。下面我們就基本思想:建立了一個隊列,為每一個Java Thread隊列保存了一個對象鎖,保證按順序執行。線程啟動的時候,使隨機的,但是執行代碼是按順序的。

import java.util.LinkedList;  import java.util.Queue;  public class ThreadTest {  private static Queue qThread=new LinkedList();//線程同步對象隊列  public static synchronized void putObject(Object t){  qThread.offer(t);  }  public static synchronized Object getObject(){  return qThread.poll();  }  public static void waitThread(Object t) throws InterruptedException{  synchronized(t){  t.wait();  }  }  public static void notifyThread(){  Object obj=ThreadTest.getObject();  synchronized(obj){  obj.notify();  }  }  public static void main(String[] args) throws InterruptedException {  int i = 0;  boolean isFirst=true;  while (i < 10) {  Object obj=new Object();  if(i>0){  isFirst=false;  ThreadTest.putObject(obj);  }  Thread t2 = new Thread2(isFirst,obj);  Object obj2=new Object();  ThreadTest.putObject(obj2);  Thread t3 = new Thread3(obj2);  t2.start();  t3.start();  i++;  }  }  }  /**  * 線程2  *  * @author Harry.WANG  *  */  class Thread2 extends Thread {  private boolean isFirst=false;  private Object obj;  public Thread2(boolean f,Object obj){  this.isFirst=f;  this.obj=obj;  }  @Override  public void run() {  if(!this.isFirst){  System.out.println(this.getName()+"等待...");  try{  ThreadTest.waitThread(obj);  }catch(InterruptedException e){  e.printStackTrace();  }  }  System.out.println("啟動"+this.getName()+"...");  try {  sleep(3000);//等待3秒,為了測試  } catch (InterruptedException e) {  e.printStackTrace();  }  System.out.println("停止"+this.getName()+"...");  ThreadTest.notifyThread();  }  }  class Thread3 extends Thread {  private Object obj;  public Thread3(Object obj){  this.obj=obj;  }  @Override  public void run() {  System.out.println(this.getName()+"等待...");  try{  ThreadTest.waitThread(obj);  }catch(InterruptedException e){  e.printStackTrace();  }  System.out.println("啟動"+this.getName()+"...");  try {  sleep(3000);//等待3秒,為了測試  } catch (InterruptedException e) {  e.printStackTrace();  }  System.out.println("停止"+this.getName()+"...");  ThreadTest.notifyThread();  }  }

看完上述內容,你們對Java中怎么實現Thread隊列有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女