网络连接模型 Socket和ServerScocket

网络连接模型
C/S模式
客户端-服务端 client-server
C/S中,客户端程序要独立开发.server也要独立开发.
C/S的优势:效果好,易操作性好.
C/S的劣势:维护难度高.需要用户有额外的操作.

B/S结构
浏览器-服务器
B/S的优势:客户端统一,通信协议一直(http协议).维护难度低
B/S的劣势:效果差一些.

Socket和ServerScocket
ServerSocket 用于打开服务端口,等待客户端连接运行在服务端.

Socket用于连接指定服务器的指定端口.运行在客户端.

线程池
当我们需要并发执行任务时,会频繁的创建线程,并在执行任务后销毁.因为创建线程和销毁线程的性能开销比较大,对线程执行的效率影响较高.所以我们使用另一种方式:
首先创建一批空线程,当有任务需要执行时,取出一个空线程去执行该任务,当任务执行完毕后,将线程回收,等待下次执行任务.
这样我们就节省出了创建和销毁线程,从而提高程序的运行效率.
线程池和现实生活中的吃饭的碗很相似.

java中的线程池
ExecutorService实现了线程池的功能.
创建线程池的方法需要使用线程池工具类Executors
Excutors.newCachedThreadPool()
创建一个可以根据需要创建新线程的线程池.
Excutors.newFixedThreadPool(int size)
创建一个指定大小的线程池
Excutors.newScheduledThreadPool(int size)
创建一个指定大小的线程池,可以指定任务一个延迟时间,在超过这个时间后运行任务
Excutors.newSingleThreadExcutor()
创建一个只有一个线程的Executor

java中的双缓冲队列
在存取同步的基础上,可以保证存和取异步操作,比单缓冲效率高一些
BlockingDeque类 双缓冲队列

实现类
ArrayBlockingQueue:
规定大小的双缓冲队列,其构造方法要求传入一个int值,指定队列长度.存取数据本着先进先出原则
LinkedBlockingQueue:
不定长的双缓冲队列,队列最大值可以是int最大值.队列提供了一个带有int值的构造方法,可以变为定长的队列.
PriorityBlockingQueue:
类似于LinkedBlockingQueue,但存储数据不是本着先进先出的规则,而是本着自然排序原则(小->大)或者在构造方法中传入比较器,按照比较规则存取.
SynchronousQueue:
特殊的队列,存取必须满足存一次取一次的顺序.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值