知识大全 加入多线程[2]

Posted 内容

篇首语:只要持续地努力,不懈地奋斗,就没有征服不了的东西。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 加入多线程[2]相关的知识,希望对你有一定的参考价值。

疯狂Java讲义:加入多线程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  当服务器线程读到客户端数据之后 程序遍历socketList集合 并将该数据向socketList集合中的每个Socket发送一次 该服务器线程将把从Socket中读到的数据向socketList中的每个Socket转发一次 如run()线程执行体中的粗体字代码所示

  每个客户端应该包含 条线程 一条负责读取用户的键盘输入 并将用户输入的数据写入Socket对应的输出流中 一条负责读取Socket对应输入流中的数据(从服务器发送过来的数据) 并将这些数据打印输出 其中负责读取用户键盘输入的线程由Myclient负责 也就是由程序的主线程负责 客户端主程序代码如下

  程序清单 codes/ / /MultiThread/client/MyClient java

  public class MyClient

  

  public static void main(String[] args)throws Exception

  

  Socket s = s = new Socket( )

  //客户端启动ClientThread线程不断读取来自服务器的数据

  new Thread(new ClientThread(s)) start()                                 //①

  //获取该Socket对应的输出流

  PrintStream ps = new PrintStream(s getOutputStream())

  String line = null;

  //不断读取键盘输入

  BufferedReader br = new BufferedReader(new InputStreamReader(System in))

  while ((line = br readLine()) != null)

  

  //将用户的键盘输入内容写入Socket对应的输出流

  ps println(line)

  

  

  

  上面程序中获取键盘输入的代码在第 章中已有详细解释 此处不再赘述 当该线程读到用户键盘输入的内容后 将用户键盘输入的内容写入该Socket对应的输出流

  除此之外 当主线程使用Socket连接到服务器之后 并启动了ClientThread来处理该线程的Socket通信 如程序中①号代码所示

  ClientThread线程负责读取Socket输入流中的内容 并将这些内容在控制台打印出来

  程序清单 codes/ / /MultiThread/client/ClientThread java

  public class ClientThread implements Runnable

  

  //该线程负责处理的Socket

  private Socket s;

  //该现成所处理的Socket所对应的输入流

  BufferedReader br = null;

  public ClientThread(Socket s)

  throws IOException

  

  this s = s;

  br = new BufferedReader(

  new InputStreamReader(s getInputStream()))

  

  public void run()

  

  try

  

  String content = null;

  //不断读取Socket输入流中的内容 并将这些内容打印输出

  while ((content = br readLine()) != null)

  

  System out println(content)

  

  

  catch (Exception e)

  

  e printStackTrace()

  

  

  

  上面线程的功能也非常简单 它只是不断获取Socket输入流中的内容 当获取Socket输入流中的内容后 直接将这些内容打印在控制台 如上程序中粗体字代码所示

  先运行上面程序中的MyServer类 该类运行后只是作为服务器 看不到任何输出 接着可以运行多个MyClient 相当于启动多个聊天室客户端登录该服务器 接着可以看到 我们在任何一个客户端通过键盘输入一些内容后单击 回车 键 将可看到所有客户端(包括自己)都会在控制台收到他刚刚输入的内容 这就粗略实现了一个C/S结构聊天室的功能

       返回目录 疯狂Java讲义

       编辑推荐

       Java程序性能优化 让你的Java程序更快 更稳定

       新手学Java 编程

       Java程序设计培训视频教程

cha138/Article/program/Java/gj/201311/27784

相关参考

知识大全 超线程多核心下Java多线程编程技术分析[2]

超线程多核心下Java多线程编程技术分析[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 Java多线程编程三步曲[2]

Java多线程编程三步曲[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java开发中多线程同步技巧[2]

Java开发中多线程同步技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java多线程同步设计中使用Metux[2]

Java多线程同步设计中使用Metux[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Java多线程技术中所有方法的详细解析[2]

Java多线程技术中所有方法的详细解析[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以上

知识大全 在Java平台上进行多线程编程的缺陷[2]

在Java平台上进行多线程编程的缺陷[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  争用条

知识大全 Eclipse客户端程序中多线程的使用[2]

Eclipse客户端程序中多线程的使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ec

知识大全 C#多线程学习—生产者和消费者(2)

C#多线程学习—生产者和消费者(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Java多线程Socket操作猜数游戏样例[2]

Java多线程Socket操作猜数游戏样例[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现