import org.apache.log4j.logger;
/*** 迴圈佇列小工具,可以包括如下功能:
* 1. 可以放入物件,可以取出
* 2. 當放入物件已滿,可以判斷,物件出口是否關閉,如果關閉那麼就代替最舊的物件,如果出口比較慢
* 可以等待一下
* 3. 出口能獲得物件池中最舊的那個物件。
* 4. 服務端不能依賴於客戶端的鏈結,能處理客戶端的斷開和鏈結。
* * @author zjfan**/
public class cyclequeuecontainer
public synchronized static cyclequeuecontainer getinstance()
return instance;
}private node nodehead;
private node nodetail;
private boolean fullalarm = false;
private boolean sleepsign = false;
private int threadsleepsecond = 60;
private string addobjthreadname = "thread-0";
public void setthreadsleepsecond(int threadsleepsecond)
public void setaddobjthreadname(string addobjthreadname)
public void setupcyclequeue(int queuelength)
nodenew.next = nodere;
nodehead = nodere;
nodetail = nodere;
log.info("迴圈佇列建立成功,佇列長度:" + queuelength);
}/**
* 對外視窗
* * @return
*/public object getobjfrocontainer()
/*** 對外視窗
* * @param obj
*/public void addobjtocontainer(object obj)
/*** 主要負責新增物件執行緒是否休息
* * @param operatetype
* @param obj
* @return
*/private object operatecontainer(boolean operatetype, object obj) catch (interruptedexception e)
sleepsign = false;}}
return obj_re;
}/**
* 同步操作迴圈佇列
* * @param operatetype true: 向佇列加物件,false: 從佇列取資料;
* @param obj
* @return
*/private synchronized object operatequeue(boolean operatetype, object obj) else
}private void addobject(object obj) else
} else
}private object pollobject() else
}/**
* 判斷佇列是否滿
* * @return
*/private boolean isqueuefull() else
}/**
* 判斷佇列是否為空
* * @return
*/private boolean isqueueempty() else
}private class node
}
Tensorflow的佇列多執行緒讀取資料
在tensorflow中,有三種方式輸入資料 1利用feed dict送入numpy陣列 2利用佇列從檔案中直接讀取資料 3預載入資料 其中第一種方式很常用,在tensorflow的mnist訓練原始碼中可以看到,通過feed dict 可以將任意資料送入tensor中。第二種方式相比於第一種,速度...
多執行緒併發佇列實現
2.使用 wait notify 實現乙個佇列,佇列有2個方法,add 和 get add方法往佇列中新增元素,get方法往佇列中獲得元素。佇列必須是執行緒安全的。如果get執行時,隊列為空,執行緒必須阻塞等待,直到有佇列有資料。如果add時,佇列已經滿,則add執行緒要等待,直到佇列有空閒空間。1...
多執行緒, 執行緒佇列
self performselectoronmainthread selector refreshcellforliveid withobject userinfo waituntildone yes 該方法的作用是在主線程中,執行制定的方法 塊 引數 selector refreshcellfor...