zoukankan      html  css  js  c++  java
  • 关于java之socket输入流输出流可否放在不同的线程里进行处理

    2014年2月20日到叫(黑土)(人士)的公司去面试,一家新成立的公司。刚去公司是他们新聘请的猎头A来面试我的,A面试完之后是一个号称X总的年轻人来面试我,初一见此人有点邋遢,穿着西装。

    X:"你以前有做过地图?"(我简历上有写)

    我:"是的,在地图上做过增值"

    X:"你以前也做过socket,那你socket怎么样?"

    我:"还行"

    X:"如果100w的数据怎么发送?"

    当时我被他这么一问,问闷了。

    我也没多想就回答:"100w的话做长连接吧"

    X:"长连接很耗电?"

    我:"如果是PC或者服务器,这个电不在计算的范围内?"

    X:"是发送到手机上的。"

    接着我也没下文了,闷了。

    面试完了,然后回公司的路上我在想:"对呀,服务器怎么发起到手机端的socket"

    郁闷中。。。。

     

    平常我自己写的原生socket(不是nio),一个socket的input和output都是在同一个线程中。即同步式的,先读再写或者先写再读(有先后顺序,没办法随时写或者随时读)。

    不过在回公司的路上之后我也在想,这个原生socket能不能把inputstream和outputstream分别放在不同的线程上面,同时有一个线程进行把数据一直放到写队列中。

    但是一旦read线程启动,write线程就被block了(即read被block时write也被block了)。所以同一个socket的input和output只能是放在同一个线程中进行过程式(同步式的,read之后再write,或者write之后再read)

  • 相关阅读:
    Delphi-基础(for循环)
    Delphi-基础(运算符)
    Delphi-基础
    python 序列化
    python 模块、包
    time,datetime,random,os,sys,hashlib,logging,configparser,re模块
    第一章.Python环境安装&Pycharm日常使用
    第一章.变量.常量.注释.运算符.if流程控制
    Redis持久化数据介绍&主从复制和哨兵模式环境部署
    Redis缓存应用安装部署&常见的数据类型
  • 原文地址:https://www.cnblogs.com/silentjesse/p/3563724.html
Copyright © 2011-2022 走看看