51,411
社区成员
发帖
与我相关
我的任务
分享
import java.util.ArrayList;
import java.util.List;
public class DemoTest {
private static List<String> list = new ArrayList<String>();
private static void setup() {
new Thread() {
@Override
public void run() {
super.run();
while(true) {
if (list.size() > 0) {
System.out.println("Out:-------------------------------------- ");
synchronized (list) {
for (int i = list.size() - 1; i >= 0; i-- ) {
System.out.println(i+":"+list.get(i) + " ");
list.remove(i);
}
System.out.println(" -------------------------------------- end");
}
} else {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}.start();
}
public static void writeNewData(String s) {
synchronized (list) {
list.add(s);
}
}
static {
DemoTest.setup();
}
}
别的类中再调用DemoTest.sendDataCmd(strInput);就可以成功将数据写入list中了。
public class Demo {
public static void main(String[] args) {
final Res resource = new Res();
new Thread(new Runnable() {
private boolean isRunning = true;
@Override
public void run() {
// while (isRunning) {
// resource.get();
// }
for (int i = 0; i < 1000; i++) {
System.out.println("扫描到当前元素:" + resource.get());
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
resource.put(i);
System.out.println("成功添加 :" + i);
}
}
}).start();
}
}
class Res {
private List<Integer> array = new ArrayList<Integer>();
private ListIterator<Integer> iterator = array.listIterator();
Res() {
iterator.add(50);
iterator.add(60);
iterator.add(70);
}
public synchronized void put(Integer data) {
iterator.add(data);
}
public synchronized Integer get() {
if (iterator.hasNext()) {
Integer data = iterator.next();
return data;
}
else {// 迭代到结尾或者集合已空
// 集合空
if (array.isEmpty())
return null;
// 集合非空
iterator = array.listIterator();
Integer data = iterator.next();
return data;
}
}
看看这代码能不能满足你的需求。。。。