问答详情
源自:3-5 使用多线程实现多客户端的通信

把所有操作都放到线程中,也能运行,差别在哪里呢?

我把所有的监听端口,输入输出等操作全部放到线程中,在Server主程序中只写如下代码: system.out.println("服务器启动"); 

ServerThread st=new ServerThread(); 

st.start(); 

这样写也能运行,请问老师差别在哪里呢?

提问者:团cn_0 2016-02-23 14:08

个回答

  • SoyaDokio
    2016-07-01 02:39:04

    题主,我有两个疑问。

    1. 你说Server类负责启动线程类,那是死循环启动,还是加什么判断条件?不循环相当于单线程,无条件死循环的话试问你给JVM设定-Xmx 10240mb的话会不会能撑住24小时才报错java.lang.OutOfMemoryError?

    2. 两个ServerSocket监听同一端口的话,后监听的会报错端口占用。那死循环中启动的第二个线程会不会为抢第一个线程所占的端口而报错?

    这两个问题想明白了你就知道这种假设是否可取了。

  • javaVampire
    2016-05-16 22:37:04

    耦合和代码易读性吧

  • 花黑暗里开放
    2016-05-12 15:49:50

    #!/bin/bash


  • tbb616065450
    2016-02-23 18:29:19

    一样的,你这样更加方便管理,和安全性会更高!