问题描述
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
new Thread(() -> {
System.out.println("start");
for (int i = 0; i < 10; i++) {
queue.add(String.valueOf(i));
}
System.out.println("end");
}).start();
while (true) {
String data = queue.poll();
if (data != null) {
System.out.println(data);
}
}
}
但是为什么下面的代码不能?
唯一的区别是在将每个数据添加到队列之前,添加线程休眠一秒钟。
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
new Thread(() -> {
System.out.println("start");
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printstacktrace();
}
queue.add(String.valueOf(i));
}
System.out.println("end");
}).start();
while (true) {
String data = queue.poll();
if (data != null) {
System.out.println(data);
}
}
}
感谢您的回复!
解决方法
我相信这可以解决问题:
import java.util.LinkedList;
import java.util.Queue;
public class HelloWorld{
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
new Thread(() -> {
System.out.println("start");
for (int i = 0; i < 10; i++) {
try {
queue.add(String.valueOf(i));
Thread.sleep(1000);
} catch (InterruptedException e) {//InterruptedException
e.printStackTrace();
}
}
System.out.println("end");
}).start();
while (true) {
String data = queue.poll();
if (data != null) {
System.out.println(data);
}
}
}
}