当前位置:天才代写 > tutorial > JAVA 教程 > Java编程那些事儿97——多线程利用示例2

Java编程那些事儿97——多线程利用示例2

2017-11-12 08:00 星期日 所属: JAVA 教程 浏览:308

副标题#e#

12.3.2 模仿网络数据发送

在实际的网络措施开拓中,由于网络通讯一般都需要耗损时间,所以网络通讯的内容一般都启动专门的线程举办处理惩罚。

这样,在一个最简朴的网络措施措施中,至少就包括了两个线程:处理惩罚界面绘制和吸收用户输入的系统线程,以及至少一个网络通讯线程。

下面以一个简朴的模仿措施,实现模仿网络数据的发送成果,关于更具体的网络编程中线程的利用,可以参看后续的网络编程章节。

在该示例代码中,用户在节制台输入需要发送的内容,措施吸收到用户的输入今后,启动一个单独的线程举办网络通讯,然后用户可以继承在节制台举办输入。示例代码如下所示:

package example2;
import java.io.*;
/**
* 模仿网络数据发送的测试类
*/
public class TestNet {
 public static void main(String[] args) {
  BufferedReader br = null;
  String input;
  try{
    //初始化输入流
    br = new BufferedReader(
    new InputStreamReader(System.in));
    //轮回吸收输入
    while(true){
     System.out.println("请输入内容(quit代表退出措施):");
     //读取节制台输入
     input = br.readLine();
     //判定是否是竣事
     if(input.equals("quit")){
      break; //竣事措施
     }
     //模仿发送
     NetDemoThread ndt = new NetDemoThread(input);
    }
  }catch(Exception e){
  }finally{
      try {
        br.close();
      } catch (Exception e) {}
  }
 }
}
package example2;
/**
* 通过担任Thread类的方法模仿网络通讯线程
*/
public class NetDemoThread extends Thread {
 String data;
 public NetDemoThread(String data){
  this.data = data;
  start();
 }
 public void run(){
  try{
    System.out.println("开始发送");
    Thread.sleep(10000);  //模仿网络发送的延迟
    System.out.println("发送完成,发送的内容是:" + data);
  }catch(Exception e){}
 }
}


#p#副标题#e#

在该示例中,TestNet类实现吸收节制台输入,并在吸收到用户输入今后,启动网络通讯线程发送数据,当用户在节制台输入quit时,竣事措施。NetDemoThread类实现模仿网络通讯线程,在需要发送网络数据时,建设一个NetDemoThread范例的线程工具,并将需要发送的内容作为参数传入到该工具的内容,在run要领中,输出线程的状态,并利用一个延迟10秒,比实际的延迟要夸大许多,的代码模仿发送时的线程延迟。由于这里的延迟较量大,所以假如用户输入的数据速度较量快的话,会存在多个网络通讯的线程同时运行。

下面是措施的运行功效:

请输入内容(quit代表退出措施):
abc
请输入内容(quit代表退出措施):
开始发送
123
请输入内容(quit代表退出措施):
开始发送
tbc
请输入内容(quit代表退出措施):
开始发送
faga
请输入内容(quit代表退出措施):
开始发送
发送完成,发送的内容是:abc
hfsd
请输入内容(quit代表退出措施):
开始发送
发送完成,发送的内容是:123
发送完成,发送的内容是:tbc
发送完成,发送的内容是:faga
发送完成,发送的内容是:hfsd
quit

在该次运行中,用户依次输入了:123、tbc、faga和hfsd,当用户输入完成今后,模仿网络通讯的线程就被启动,这个可以从输出“开始发送”语句看出,当内容发送完成今后线程自然竣事。最后输入quit指令竣事措施。

虽然,该措施会在用户输入的内容差异时呈现许多差异的功效,这些功效可以或许使你体会到两点:

1、多个网络通讯的线程在同时事情,互不滋扰。

2、当输入quit今后,假如尚有网络通讯的线程没有竣事,则措施会期待到网络通讯的线程竣事今后才真正竣事。

虽然,这两个简朴的例子只可以或许使你熟悉根基的多线程编程的利用,还没有进入到多线程编程的焦点。

其实,当多线程一起运行时,除了带来一系列的优势以外,还会带来一系列的问题。譬喻现实社会中,一个儿子担任遗产时就很简朴,可是当有多个儿子呢?所以,下面来深入线程的观念,领略多线程编程存在的问题以及办理步伐。

 

    关键字:

天才代写-代写联系方式