当我尝试从我创建的主线程和线程获取控制台输入时,控制台输入只能由一个线程(主线程或新线程)检索。代码如下:
public static void main(String[] args)
{
try
{
//start a new thread to accept user input
Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
try
{
while(true)
{
String input = stdIn.readLine();
System.out.println(Thread.currentThread().getName() + ":" + input);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}, "Owen");
thread.start();
//accept user input in main thread
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String input = stdIn.readLine();
System.out.println(Thread.currentThread().getName() + ":" + input);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
可能的结果如下:
始终是新主题:
主
欧文:主
您好
欧文:喂
什么
欧文:什么
我怎么知道当前输入将由哪个线程检索?或者有没有办法为每个线程启动两个控制台(甚至更多)?