我是Java的初學者。我已經寫了這個簡單的代碼,它接受來自用戶的整數數據並將它推入堆棧。線程不斷檢查堆棧的大小是否爲== 3.一旦堆棧達到此大小,線程將從堆棧彈出元素。我知道堆棧不同步。因此我使用了Collection.Synchronized方法來同步它。如何同步堆棧?
該實施是否可行?
import java.util.Collections;
import java.util.Scanner;
import java.util.Stack;
public class StackSyncronisation<Item> extends Thread{
private Stack<Item> s1;
public StackSyncronisation(){
s1=new Stack<Item>();
Collections.synchronizedList(s1);
}
public void run(){
//System.out.println("Inside run method");
while(true){
if(s1.size()==3){
{
while(!s1.isEmpty()){
// Poping out
System.out.println("Poping out from Stack");
s1.pop();
}
}
}
}
}
public void push(Item d){
s1.push(d);
}
public static void main(String[]argc){
StackSyncronisation<Integer> x1=new StackSyncronisation<Integer>();
x1.start();
Scanner in=new Scanner(System.in);
while(true){
System.out.println("Enter 1:Push");
//in.nextInt();
switch (in.nextInt()) {
case 1: x1.push(in.nextInt());
break;
default:
break;
}
}
}
}
「此實施是否有效?」 - 寫一些測試.... –