java 与 .net socket_是否可以同时读取和写入java.net.Socket?

是否可以同时从套接字读取和写入?我有一个不断读取套接字的线程.由于只有一个线程从套接字读取,因此读取操作是线程安全的.现在我有许多线程(比如100)写入套接字.因此很明显我通过做这样的事情来使写操作线程安全,

package com.mysocketapp.socketmanagement;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

public class SocketManager {

private Socket socket = null;

private InputStream inputStream = null;

private OutputStream outputStream = null;

public SocketManager() {

socket = new Socket("localhost", 5555);

//server's running on same machine on port 5555

inputStream = socket.getInputStream();

outputStream = socket.getOutputStream();

}

public void writeMessage(byte[] message) throws IOException {

synchronized (SocketManager.class) {

if (message != null) {

outputStream.write(message);

}

}

}

public byte[] readMessage() throws IOException {

byte[] message = new byte[10]; //messages are of fixed size 10 bytes

inputStream.read(message);

}

}

现在我有一个不断调用readMessage()函数的线程(在while循环中).据我所知,如果要读取的套接字上没有消息,则语句inputStream.read(message)将等待消息.

我想知道对outputStream.write(message)是否安全;而inputStream.read(message);正在执行中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值