如何获取java中不同线程的控制台输入?

时间:2017-05-10 08:52:17

标签: java multithreading system.in

当我尝试从我创建的主线程和线程获取控制台输入时,控制台输入只能由一个线程(主线程或新线程)检索。代码如下:

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();
        }
    }

可能的结果如下:

始终是新主题:

欧文:主

您好

欧文:喂

什么

欧文:什么

我怎么知道当前输入将由哪个线程检索?或者有没有办法为每个线程启动两个控制台(甚至更多)?

0 个答案:

没有答案