java虚拟机并发编程 (1-基础知识)

in JAVA  |  update on
基础知识并发的问题饥饿当一个线程等待某个需要运行很长时间或永远无法完成的事件发生时,该线程就会陷人饥饿。为了避免线程陷入饥饿,我们可以为其设计一个等待超时的策略。 死锁两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。 产生条件 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,...
Continue reading

java虚拟机并发编程 (4-可扩展性和线程安全)

in JAVA  |  update on
可扩展性和线程安全## 用ExecutorService管理线程 每个ExecutorService都代表一个线程池,其作用是将线程的创建与执行了过程分离开来,而不是将线程的生命周期管理和任务的执行过程绑在一起。我们可以按需配置线程池的类型,单线程的、带缓存的、基于优先级的、按预定时间调度/按周期调度的和固定大小的,待调度任务的等待队列的大小亦可通过代码进行配置。通过这组API,我们可以很容易地调...
Continue reading

netty权威指南 (1-NIO入门)

in JAVA  |  update on
NIO基础知识Linux网络I/O模型简介根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型 阻塞I/O模型 非阻塞I/O模型 I/O复用模型select/poll 进程通过将一个或多个fd传递给select或poll系统调用 I/O多路复用技术 支持一个进程打开的socket描述符(FD)不受限制(仅受限于操作系统的最大文件句柄数) I/O效率不会随着FD数目的增加而...
Continue reading

netty权威指南 (2-netty入门)

in JAVA  |  update on
netty入门netty服务端和客户端开发服务端主流程123456789101112131415161718192021222324// 配置服务端Reactor线程组// 一个用于服务端接受客户端的连接EventLoopGroup bossGroup = new NioEventLoopGroup();// 用于进行SocketChannel的网络读写EventLoopGroup workerG...
Continue reading

netty权威指南 (3-TCP粘包拆包问题)

in JAVA  |  update on
TCP粘包拆包问题TCP粘包/拆包TCP粘包/拆包问题说明假设客户端分别发送了两个数据包Dl和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下5种情况。 服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包 服务端一次接收到了两个数据包,D1和D2粘合在一起,被称为TCP粘包 服务端分两次读取到了两个数据包,第一次读取到了完整的D1包和D2包的部分内容,...
Continue reading

netty权威指南 (4-解码器)

in JAVA  |  update on
解码器LineBasedFrameDecoderLineBasedFrameDecoder的工作原理足它依次遍历ByteBuf中的可读字节,判断看是否有“\n”或者“\r\n”,如果有,就以此位置为结束位置,从可读索引到结束位置区间的字节就组成了一行。它是以换行符为结束标志的解码器,支持携带结束符或者不携带结束符两种解码方式,同时支持配置单行的最大长度。如果连续读取到最大长度后仍然没有发现换行符,...
Continue reading
  • page 1 of 1

srzyhead

Progress is the activity of today and the assurance of tomorrow.


Web Developer


Tianjin,China