草庐IT

同步Socket

全部标签

java - 在客户端 JAVA 中调用 socket.close() 时套接字不关闭服务器端

我在java中遇到套接字问题。我有一个ServerSocket正在监听accept()并为每个客户端请求生成线程。客户端和服务器之间的通信工作正常。我正在使用输入流从服务器线程中的客户端读取数据,例如:inputStream=mySocket.getInputStream();bytes=inputStream.read(buffer);我的问题是,如果我从客户端调用socket.close(),bytes=inputStream.read(buffer);的阻塞调用没有任何反应,它会继续阻塞。但是,如果我关闭来自服务器的套接字,它会起作用,然后客户端的inputStream.read

java - 静态方法上的同步有什么作用?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowdosynchronizedstaticmethodsworkinJava?我想知道如果在静态方法上使用synchronized会发生什么。该类是否锁定了该方法?这与非静态方法上的同步有何不同?谢谢

java - 如何理解java Socket-Permissions?

permissionjava.net.SocketPermission"192.168.1.1:31337","connect,accept,resolve";以下权限允许什么?我的应用程序是否允许仅接受来自192.168.1.1:31337(可能是外部客户端)的连接或接受到192.168.1.1:31337的连接(我的应用程序在192.168.1.1:31337上运行,“听”的区别在哪里'?). 最佳答案 如果您的代码是小程序或在Java安全管理器下运行,您需要明确授予它执行某些操作的权限。Inorderforaresourcea

java - 如何在不使用 this 的情况下在接口(interface)默认方法内进行同步?

我在需要同步的接口(interface)中有许多默认方法,似乎只有this可用:defaultvoidaddUniqueColumns(Listnames){synchronized(this){...dosomething}}问题是,我想在私有(private)锁上同步而不是this以便更好地控制:defaultvoidaddUniqueColumns(Listnames){synchronized(lock){//howtogetaprivatelockinadefaultmethod??...dosomething}}解决方案?聪明的解决方法?或者只是忍受它:)!

java - 保持 i18n 资源同步

我正在寻找i18n属性文件的编辑器/比较器,以帮助我保持不同语言文件的同步。基本上,它会比较一堆属性文件并显示哪些键在特定语言中不存在。属性看起来像component.titlepage.title=helloworld简单的差异是不可能的,因为右侧将因语言而异。我们目前的基础设施:Java应用程序使用maven2构建系统不同组件的不同i18n属性文件。(每个组件每种语言1个属性文件) 最佳答案 Checkstyle工具,我通常将其作为每次checkin主分支后完成的每个持续集成构建的一部分运行,它会告诉您任何给定的属性文件集是否具

Java 套接字错误 : Reading Strings from Socket's InputStream

我正在使用Socket与ServerSocket通信。字符串正在从服务器发送到我的套接字。每个不同的行都是一条消息,在解析时包含信息。要读取这些文本行,需要使用扫描器。问题在于数据“突飞猛进”。虽然Server在连续均匀的发送数据,但是client端的Scanner读取的数据好像有停顿,一下子读入一堆消息(30-40条),然后又停顿。它无限期地重复这个循环。如果我提高发送数据的速率,暂停的持续时间会减少;如果我放慢数据速度(每秒1条消息),错误仍然存​​在并且暂停变得很长。这几乎就好像Socket在将任何数据发送到Scanner之前等待其缓冲区溢出;然后刷新所有内容并再次等待溢出。但是

java - Java中方法、对象、类的同步

关于在多线程环境中使用同步,我需要一些说明。我在下面有一个小例子Class。但我实际上发现很难对以下内容的工作方式进行测试;我想要测试用例的原因是为了了解同步如何处理这些不同的场景如果一个线程调用SharedResource.staticMethod,它将获得类的锁。这是否意味着SharedResource的instance,比如x,必须等到它获得lock才能执行x.staticMethod.将block中的this同步,获取该部分代码或整个的锁对象。即另一个thread可以在同一个object上调用同一个method吗?但执行不属于同步块(synchronizedblock)的其余代

java - Spring MVC 中的同步方法

我正在尝试在springController中使用同步方法。因为我们的支付网关一次点击方法[@RequestMapping(value="/pay",method=RequestMethod.POST)]不同的交易[txnid:txn01&txn02]。但是由于使用同步块(synchronizedblock),这2个不同的事务处理一个一个地处理而不是并行。问题->为什么我在Controller中使用同步块(synchronizedblock)是说事务[txn01]命中[@RequestMapping(value="/pay",method=RequestMethod.POST)]两次,

java - 什么是Java中的同步上下文

你们都知道Java中的同步上下文可以是实例。在某个加载类的java.lang.Class实例上。在给定的对象上我需要问;当我写Dimensiond=newDimension();synchronized(d){//criticalatomicoperation}给定对象的同步实际上等于实例上的同步。所以当我编写synchronized(d)时,其中d是对象的一个​​实例,然后线程将获得所有同步实例代码块的锁。能否请您提供有关同步上下文的更多详细信息。我们将不胜感激。 最佳答案 synchronized关键字提供对其引入的代码块(可能

java - 在服务于 Socket 连接的两个线程之间共享公共(public)数据

我在SO上看到很多类似的问题,但几乎没有一个在图片中有Socket。所以请花点时间阅读问题。我有服务器应用程序(使用ServerSocket)监听请求,当客户端尝试连接时,会创建新线程来为客户端提供服务(并且服务器返回监听模式以接收新请求).现在,我需要根据其他客户端发送到服务器的内容来响应一个客户端。示例:ServerSocket监听传入连接。客户端A连接,创建新线程为A服务。客户端B连接,创建新线程为B服务。A向服务器发送消息“HellofromA”。将此消息作为对客户端B的响应发送。我是整个“线程间通信”的新手。显然,上面提到的情况听起来很简单,但我描述这个是为了获得提示,因为我