当前位置: 首页 > 知识库问答 >
问题:

在java中为输入流设置监听器

晋安国
2023-03-14

这只是一个例子。我有一个输入流,我想为它设置一个侦听器。我怎么能做到。第一种方法是创建一个后台线程,反复检查它。

Thread thread=new Thread(){
    public void run() {
        while(true){
        Thread.sleep(100);
        //optional sleep to avoid wasting cpu cycles
            int c;
            if((c=in.read())!=-1)addEventToUIthread(c);
        } 
    } 
} 

但我认为没有线。睡眠会浪费cpu周期。和它一起;它会降低获取事件的准确性。假设输入流是一个无法访问的输出流正在写入的文件。这只是一个例子,说明我不知道这种后台线程的运行时成本。请解释一下。

共有1个答案

贺元明
2023-03-14

如果要立即读取输入字节,则不需要使用线程。睡在这里是为了保护CPU周期,因为InputStream。read()方法是同步运行的,换句话说,它阻塞直到有一个字节可用。

但是,如果您想在读取数据时有意降低CPU使用率,请使用线程。睡眠将是正确的方式。

 类似资料:
  • 我有一个基本回收适配器,如下所示: : 基本视图保持架为: 假设ViewHolder有两个视图,一个TextView和一个ImageView。如何对ViewHolder的itemview中的所有项目实现ClickListener

  • 我有一个带有按钮的JFrame。当用户按下按钮时,将执行一系列耗时的操作。我在表格上有一个JLabel,上面写着“请稍候”,我想在执行操作时变得可见,然后在完成时变得不可见。因此,我将放在动作侦听器的开头,放在末尾,但没有任何反应。 似乎标签的显示正在排队,直到操作完成,所以它只是可见,然后立即不可见。在继续操作侦听器中的其余代码之前,如何确保标签变为可见?

  • 是否有任何直接的方法将日期设置为变量,但作为输入?我的意思是我不知道日期在设计时,用户应该给它。我尝试了以下代码,但它不起作用:Calendar mydate=new GregorianCalendar(int year,int month,int day);

  • 问题内容: 我在try / catch块中有以下代码 我的问题是,当我必须在finally块中关闭这些流时,是否必须关闭所有3个流,或者仅关闭 befferedreader 会关闭所有其他流? 问题答案: 按照惯例,包装流(用于包装现有流)在关闭时会关闭基础流,因此仅在示例中必须关闭。而且,关闭已经关闭的流通常是无害的,因此关闭所有3个流都不会受到伤害。

  • 我正在开发一个Android聊天应用程序。一切运作良好,但除了一件事;我想设置一个布局的可见性消失,然后设置一个不同的布局可见时,用户开始输入编辑文本,就像在WhatsApp上实现的。但是我似乎想不明白。任何帮助都将不胜感激 基本上,我想做的是设置一个布局的可见性,该布局包含一个图像按钮,用于将图像上载到gone,然后显示一个布局,该布局包含一个图像按钮,用于在用户开始键入时将edittext中的

  • 我正在制作Instagram克隆应用程序。我想添加双击功能。如何在ImageView上设置双击侦听器?