我有两个线程正在运行,其中一个线程应该从用户那里获取信息,另一个线程应该处理用户提供的信息,具体如下:
public class UserRequest implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
String request;
Scanner input = new Scanner(System.in);
while(true)
{
System.out.println("Please enter request:");
request = input.nextLine();
try
{
//do something
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
第二个线程:
public class Poller implements Runnable {
ArrayList<String> colors = new ArrayList<String>();
public void poll()
{
for(String color : colors)
{
if(color == "")
{
//do work
}
else
{
//do work
}
}
}
@Override
public void run() {
colors.add("Violet");
colors.add("Green");
colors.add("Yellow");
colors.add("Orange");
while(true)
poll();
}
}
我想做的是将用户在
UserRequest
对象中输入的任何内容推送到Poller
对象中的ArrayList
,以便它也可以“处理”新值。我已经查看了一些类似于BlockingQueue
的东西,但我不希望任何线程等待另一个线程,因为它们除了共享数据之外还有其他任务需要完成。我该怎么做?