多執行緒中的生產者和消費者我們經常會使用到,而嫁接生產者和消費者之前的橋梁可以是佇列也可以是棧,我們今天就使用棧來手寫乙個棧demo
棧特點:filo(先進後出)
同步棧:
/**
* 同步棧
**/public class synchronizedstack
public synchronizedstack(int size, int limit) else
this.limit = limit;
this.stack = new object[this.size];
}public synchronized boolean push(t object) else
}stack[index] = object;
system.out.println("push objet:" + object);
return true;
}public synchronized t pop()
t result = (t) stack[index];
stack[index--] = null;
return result;
}public synchronized void clear()
}index = -1;
}private void expand()
object newstack = new object[newsize];
system.arraycopy(stack, 0, newstack, 0, size);
stack = newstack;
size = newsize;
}public synchronized int index()
}
生產者和消費者測試類:
/**
* 棧測試類
**/public class stacktest catch (interruptedexception e)
}if (index >= 10)
}}).start();
// 消費者
new thread(() ->
}}).start();}}
執行結果:
同步迴圈佇列Queue示例demo
多執行緒中的生產者和消費者我們經常會使用到,而嫁接生產者和消費者之前的橋梁可以是佇列也可以是棧,我們今天就使用迴圈佇列來手寫乙個同步迴圈佇列demo 迴圈佇列特點 fifo 先進先出 同步迴圈佇列 同步佇列 public class synchronizedqueue public synchron...
棧(stack) 什麼是棧?
1.棧是一種特殊的線性結構 棧滿足線性結構 棧特殊性 棧有特殊的儲存方式,訪問結構 先進先出,進和出在乙個端 2.棧的操作 入棧 向棧口放入資料元素 push 出棧 從棧口取出資料元素 pop 棧頂指標 top 用來指向最後乙個入棧元素 入棧操作 設棧的最大長度為size,棧滿不可入棧 上溢 top...
XStream入門示例DEMO
pojo類 public class xstreamtestpojo test類 public class xstreamtestutil public void writerxml listpojo catch ioexception e suppresswarnings unchecked pu...