当前位置: 首页 > 面试题库 >

java.net.Socket用什么方式线程安全?

公沈浪
2023-03-14
问题内容

我有一个同时通过BufferedReaders和BufferedWriters读写的Socket。我不确定从单独的线程可以执行哪些操作。我想从两个不同的线程同时写入套接字是一个坏主意。与同时从两个不同的线程中读取套接字相同。在一个线程上阅读而在另一个线程上写作又如何呢?

我问是因为我想让一个线程长时间阻塞读取,因为它等待更多数据,但是在此等待期间,我偶尔还会在套接字上发送数据。我不清楚这是否是线程安全的,或者在写之前是否应该取消读取(这很烦人)。


问题答案:

您实际上是从InputStream读取并写入OutputStream的。它们是相当独立的,而且只要您序列化对它们的访问权限就可以了。

但是,您必须将发送的数据与收到的数据相关联。这与线程安全性不同。



 类似资料:
  • 我看到了不同的PHP二进制文件,比如非线程或线程安全? 这是什么意思? 这些软件包之间有什么区别?

  • 下面我分享了我的代码,我试图使用线程安全的Nashorn作为脚本引擎来评估简单的数学公式。公式将类似于“a*b/2”,其中a 我需要知道这种方法是否有助于使Nashorn线程在这个用例中安全。我在Attila的回答中读到,我们可以在线程之间共享脚本引擎对象,因为它们是线程安全的。 对于bindings和eval,因为我们正在为每次执行evaluate创建新线程,每个线程都有自己的bindings对

  • 即;每个可调用方调用progressBarUpdate(): 每个doSomeStuff()都有自己的异常处理,如果发生错误或抛出异常,则返回一个空值。这就是为什么返回类型是List,并且在这种情况下返回null的原因。调用项和它们返回的文件列表之间没有交叉,它们都维护自己的文件列表。 我发现它工作得很好,但偶尔会抛出窗体的InterruptedException: 我修改了代码,使条件nv>=m

  • 问题内容: 据我所知,在android中,当我们运行进程时,它们始于Main线程。当我们做一些繁重的工作时,我们使用了一个新线程。如果我们想修改UI外观,可以使用在UI上运行。 有人可以向我解释这些线程的作用以及如何使用它们吗? 问题答案: UI线程和主线程只是同一线程的不同名称。 应用程序的所有UI膨胀都在此主线程上完成。之所以将“较重”的工作委派给其他线程,是因为我们不希望这些操作减慢UI的响

  • 问题内容: 我看过的利弊一些文章,并在Java编程语言。在其中一篇文章中,作者提到: StringBuilder 不是 线程安全的 ,因此在 多个线程中 使用 StringBuffer 。 不幸的是,我不明白这意味着什么。你能解释一下之间的区别,以及特别是在“线程安全”的环境。 如果您可以使用代码示例进行描述,我将不胜感激。 问题答案: 如果多个线程正在修改a的相同实例,则结果可能是意外的- 即某

  • 问题内容: 请用代码示例说明为什么SimpleDateFormat不是线程安全的。这节课有什么问题? 是SimpleDateFormat的格式功能问题吗?请提供一个在课堂上演示此错误的代码。 FastDateFormat是线程安全的。为什么?SimpleDateFormat和FastDateFormat有什么区别? 请用代码说明这个问题? 问题答案: 将中间结果存储在实例字段中。因此,如果两个线程