首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止console.readLine()?

如何阻止console.readLine()?
EN

Stack Overflow用户
提问于 2017-06-11 19:37:14
回答 2查看 657关注 0票数 1

以下是我的一些示例代码:

代码语言:javascript
复制
public class test implements Runnable {
@Override
public void run() {

    Console console = System.console();
    if (console == null) {
        System.exit(0);
    }
    String s = console.readLine();
    System.out.println(s);
    run();
 }
}

我的目标是在几秒钟后停止console.readLine()。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-11 19:40:42

您可以在要运行几秒钟的代码周围设置一个定时器。就像这样:

代码语言:javascript
复制
new java.util.Timer().schedule( 
    new java.util.TimerTask() {
        @Override
        public void run() {
            // your code here
        }
    }, 
    5000 
);
票数 1
EN

Stack Overflow用户

发布于 2017-06-11 19:45:19

下面是一个非阻塞的标准输入读取器,这样您就再也不用担心这样的事情了:

代码语言:javascript
复制
public final class NonblockingStandardInputReaderThread
{
    private NonblockingStandardInputReaderThread()
    {
    }

    public static void start( Consumer<String> lineConsumer )
    {
        BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( 
            System.in ) );
        Thread backgroundReaderThread = new Thread( new Runnable()
        {
            @Override
            public void run()
            {
                while( !Thread.interrupted() )
                {
                    try
                    {
                        String line = bufferedReader.readLine();
                        if( line == null )
                            break;
                        lineConsumer.invoke( line );
                    }
                    catch( IOException e )
                    {
                        System.out.println( getClass().getName() + ": " + e );
                    }
                }
            }
        }, NonblockingStandardInputReaderThread.class.getName() );
        backgroundReaderThread.setDaemon( true );
        backgroundReaderThread.start();
    }
}

因此,举个例子:

代码语言:javascript
复制
    NonblockingStandardInputReaderThread.start( s -> System.out.println( s )  );

您可以让通过标准输入提交的每一行文本在标准输出中得到回显,而无需任何阻塞。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44487961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档