zoukankan      html  css  js  c++  java
  • (二)java网络编程前置技术

    1. java.io下的字符流和字节流

      网络编程的本质是进程间的通信,通信的基础是IO模型。

      1.1字符流

     

      1.2字节流

    2.Socket

    • Socket是网络通信的端点

      2.1 通过Socket发送数据

      2.2 通过Socket读取数据

    3. 同步异步与阻塞非阻塞的概念

    同步异步指的是通信机制的两种。

    • 同步:调用一直等到结果才返回
    • 异步:调用马上返回,但是结果要之后才能知道

    阻塞非阻塞调用指的是等待调用结果返回之前调用方(请求方)处于什么状态。

    • 阻塞:一心一意等着结果返回,其他事情都做不了。
    • 非阻塞:该干嘛干嘛,虽然在等待结果,但丝毫不影响处理其他的任务。

    4. 网络通信中的线程池

    为了避免每来一个请求就创建线程,最后回收线程 所带来的资源浪费,我们可以复用线程,也就是重复使用所创建的一组线程来进行请求的处理,这一组线程也叫线程池。(类似于银行多窗口,某个窗口业务办理完,不会立即销毁,而是接着处理下一个请求)

      4.1 Java提供的线程池

    • Java提供了ExecutorService接口,通过实现该接口就可以实现各种各样的线程池管理。
    • 把任务提交给线程池,其中,任务Runnable和Callable的区别在于,Runnable一般指没有特定返回值的任务,而使用Callable接口任务结束后有返回值。
    • 提交给线程池之后得到的是Future对象,和该对象互动可了解任务的状态(完成or未完成),如果完成可以get()得到完成后返回的结果。

      4.2java创建线程池的静态方法

    • newSingleThreadExecutor:线程池中只有一个线程,我们对这一个线程进行不断的复用
    • newFixedThreadPool:固定线程数量的线程池,当超过线程容量的时候,要进行等待
    • newCachedThreadPool:比Fixed灵活,如果已有的线程全部是忙碌状态,可以为新任务创建新的线程并放入线程池
    • newScheduledThreadPool:能够实现定时处理任务的线程池
  • 相关阅读:
    Array.prototype.slice.call()
    闭包与变量
    XML处理指令
    XSLT学习(九)通过JavaScript转化xml
    chrome浏览器canvas画图不显示
    B.储物点的距离
    A.约数个数的和
    F.求最大值
    STVD+COSMIC编译工程时出现Error creating process for executable mapinfo
    STVD+COSMIC编译工程时can't open file crtsi0.sm8
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14454091.html
Copyright © 2011-2022 走看看