你能用 Future.cancel(true) 中断 BufferedReader.readLine() 吗?

2024-04-20

假设我启动了一个线程,并且有这样的内容:

 ...//initiate all the socket connection
 future = executor.submit
 (  new Runnable()
    {   public void run()
        {   ...
            ...      
            while ((str = in.readLine()) != null)
            {  //do something here

            }

    }

 );

executor 是一个 ExecutorService 对象,in 是一个 BufferedReader 对象

我知道您可以从不同的线程关闭套接字来中断该线程。但是当我尝试使用 future.cancel(true) 方法时,即使它返回 true,线程似乎仍在运行,有人知道为什么吗?或者 in.readLine() 不能以这种方式中断?


你能用 Future.cancel(true) 中断 BufferedReader.readLine() 吗?

All future.cancel(true)就是打电话thread.interrupt()在关联的线程上。这会导致sleep() and wait()操作抛出一个InterruptedException并会打断一些特殊的蔚来频道 http://docs.oracle.com/javase/6/docs/api/java/nio/channels/InterruptibleChannel.html.

但机会是你的BufferedReader不会被中断,因为它很可能是从“正常”套接字或文件读取。正如您提到的,从不同线程关闭底层套接字是终止此类 IO 方法的最佳方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你能用 Future.cancel(true) 中断 BufferedReader.readLine() 吗? 的相关文章

随机推荐

  • np.linspace 和 np.arange 有什么区别?

    我一直用np arange 我最近遇到np linspace 我想知道它们之间到底有什么区别 查看他们的文档 np arange https numpy org doc 1 18 reference generated numpy aran
  • 如何从 2 个列表中确定最佳组合

    我正在寻找一种方法来使团体中的人员达到最佳组合 让我概述一下情况 假设我们有 A B C 和 D 此外 我们还有组 1 2 3 4 和 5 两者都是示例 可以更少或更多 每个人都给彼此打分 例如 A 对 B 的评分为 3 C 对 C 的评分
  • Objective-C 中的类对象和实例变量

    我很难理解这个概念 我直接引用书中的一句话 类对象还继承自层次结构中位于其上方的类 但因为它们没有实例变量 只有实例有 所以它们只继承方法 如果我错了 请纠正我 但类对象将是这样的 NSString aString NSString all
  • AWS Elasticsearch 和 CORS

    我正在试用 AWS Elasticsearch 服务 https aws amazon com elasticsearch service https aws amazon com elasticsearch service 设置非常简单
  • 根据 C++ 标准,int 变量是对象吗?

    下面您将找到 C 标准中对象的定义 介绍对象 1 http eel is c draft intro object 1 C 程序中的构造创建 销毁 引用 访问和 操纵物体 一个object由定义 6 1 创建 由新表达 8 3 4 隐式更改
  • SFSafariViewController PresentViewController 动画

    当我打电话时presentViewController mySafariViewController animated true completion nil 视图始终像导航控制器一样从右侧进行动画处理 我尝试打电话mySafariView
  • 如何在 postgresql 中更改类型并删除值[重复]

    这个问题在这里已经有答案了 我发现了如何增加价值TYPE 但我怎样才能从中删除价值呢 例如我有TYPE with enum values A B C 如何去除 C 要从枚举 enum test 中删除值 val1 您可以使用 DELETE
  • 从 Matlab 中的时钟图像获取时间 - 图像处理

    时钟 http img710 imageshack us img710 2623 circlock jpg http img710 imageshack us img710 2623 circlock jpg 我不知道如何确定时钟指针的顶部
  • iOS >> ShareKit >> 选择所需的共享服务

    我已经在我的应用程序中实现了 ShareKit 我同意它的默认工作方式 但我希望控制可供用户选择的服务 更具体地说 我不想处理默认嵌入的所有服务 而只想处理 Facebook Twitter 和 Mail 我在 ShareKit 文件中的哪
  • Git 格式补丁输出在单个文件中

    如何将命令 format patch 的输出定向到单个文件 stdout gt 文件名
  • 嵌入公共 Facebook 页面的活动源,无需强制用户登录/允许

    这与之前多次提出的问题类似 但无论我读什么 我仍然很困惑 我有一个公共 Facebook 页面 例如 White Collar 我需要将其活动源嵌入到我的 Android 应用程序中 我了解如何获取应用程序 ID 和应用程序秘密 但我不了解
  • 如何处理Junits中Maven和Intellij之间的相对路径

    我有一个带有模块的 Maven 项目 myProject pom xml myModule pom xml foo bar txt 考虑一个 JunitmyModule需要打开哪个bar txt 对于 maven basedir 是模块目录
  • g++:找不到文件

    我最近一直在开发一个程序 该程序从 Java 程序编译并运行 C 程序 我已经让一切基本正常工作 或至少据我所知 但后来我注意到一些东西被打印到错误流中 cdog5000 srv3 java Xmx50m jar main2 jar Run
  • Python 中首选 `if x:` 或 `if x != 0:` 哪一个?

    假如说x是一个整数 构造if x 功能上与if x 0 在Python中 某些语言的风格指南明确禁止前者 例如 ActionScript Flex 的风格指南指出 您永远不应该为此类事情隐式地将 int 强制转换为 bool Python
  • 持久感知 KieSession 在事务期间不使用悲观锁

    我在用Drools with 春季启动2 3 我已经实现了持久意识KieSession 其中MySQL用于存储会话 我已经成功集成了默认的EntityManagerFactorySpring Boot 与 Drools 的结合 但我的问题是
  • 限制数据帧中的小数位数 (R)

    我想在导入数据框时限制小数位数 我的 txt输入的列每行有 16 位小数Value 我的数据框如下所示 Value 0 202021561664556 0 202021561664556 0 202021561664556 0 202021
  • 处理来自 Electron (或其他桌面平台)的 oauth2 重定向

    这主要是缺乏对 oauth2 的理解 并且可能不是特定于 Electron 的 但是我试图理解某人如何处理来自桌面平台 如 Electron 的 oauth2 重定向 url 假设应用程序中没有 Web 服务设置 桌面应用程序如何提示用户输
  • 如何使用 Selenium 测试 JQuery UI 可排序小部件?

    我们有一个可排序的列表 使用JQuery UI 可排序 http jqueryui com demos sortable 我们正在尝试使用 Selenium 实现自动化 看起来dragAndDrop函数应该可以工作 但是当我们调用它时 UI
  • 如何从 Apache Beam 中的 HTTP 响应读取大文件?

    Apache Beam 的 TextIO 可用于读取某些文件系统中的 JSON 文件 但如何从 Java SDK 中的 HTTP 响应产生的大型 JSON InputStream 中创建 PCollection 我认为 Beam 目前没有通
  • 你能用 Future.cancel(true) 中断 BufferedReader.readLine() 吗?

    假设我启动了一个线程 并且有这样的内容 initiate all the socket connection future executor submit new Runnable public void run while str in