我是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;
}
}
}
}
“此实施是否有效?” - 写一些测试.... –