一、疑问
在刚开始接触网络连接(eg:http连接,或者是数据库连接)和线程的时候,就有看过这样的结论:连接或者线程的建立是很耗费资源的。也正因为这样,所以对于连接,在实际的运用当中,是会利用连接池来对其进行重用的。对于线程也是这样,会使用线程池来对其进行重用。 但是,一直困惑我的问题是:
(1)为什么连接或者线程会占用的建立和销毁会很耗费资源,这些资源是指什么资源?
(2)在java语言里面,相比普通对象而言,线程对象,连接对象有什么区别?
二、关于连接和线程
(1)连接(eg:tcp连接,数据库连接(底层也是tcp连接)):因为连接不是物理上的连接,而是虚拟的连接。为了使得虚拟的连接获得和物理上的连接一样的效果(使得
数据就像是顺序到达的那样),需要提供可靠性保证等机制。这些机制的建立需要借助---接收缓存,发送缓存,TCB(传输控制模块,tcp软件维护的数据结构,用来
记 录, 缓存位置,当前发送序号,接收序号,窗口大小等等的信息)等等模块的帮助。所以说在建立连接的过程中,需要为上面所说的模块分配相应的资源。
(2)线程:在创建线程的时候,需要为期分配