展开全部
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
public class VectorTest3 {
/**
* @param args
*/
public static void main(String[] args) {
32313133353236313431303231363533e59b9ee7ad9431333335303539final Vector ss = new Vector();
// TODO Auto-generated method stub
for (int i = 0; i
new Thread(new Runnable() {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
ss.add("sdf--");
System.out.println(ss.size());
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
@Override
public void run() {
// TODO Auto-generated method stub
}
}).start();
}
for (int i = 0; i
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
int x = ss.size();
if (x > 20) {
// ss.remove(10);
ss.add("123--");
}
for (String s : ss)
System.out.println(s);
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
我以为你是代码有问题,原来运行也有问题:import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
public class VectorTest3 {
/**
* @param args
*/
public static void main(String[] args) {
final Vector ss = new Vector();
// TODO Auto-generated method stub
for (int i = 0; i
new Thread(new Runnable() {
Timer timer = new Timer();
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
synchronized(ss) {
ss.add("sdf--");
}
System.out.println(ss.size());
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
for (int i = 0; i
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
int x = ss.size();
if (x > 20) {
// ss.remove(10);
//synchronized (ss) {
ss.add("123--");
//}
}
synchronized (ss) {
for (String s : ss)//添加的时候肯定就不允许遍历了,如果你添加了一个新的元素,那么这个遍历的动作应该是更新这个新元素还是不更新?所以用同步
System.out.println(s);
}
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}