tomcat----http Server (线程池)+ servlet Container
线程池实现原理:简单理解就是一个用来存放线程的池子,里面放了很多的线程,当我们需要用到线程的时候就可以直接去线程池里面取,线程完成我们的任务之后就自动返回到线程池中。
A. 线程池:它是一个可以容纳线程的容器,里面装了很多的执行器(也就是线程),既然它是容器,那么就可以有很多实现方式,可以是链接,或者是数组,只要是可以用来装的都可以
B. 执行器:也就是线程,它是线程池里面管理的主要对象,我们可以向线程池获取执行器,每一个执行器都可以完成一个任务(Task),当任务完成后,就要将执行器自身放回线程池中
C. 任务:Task 它就是我们需要提交给执行器执行的事务(让线程执行的事)
多线程中线程安全Synchoronized锁机制是核心:
锁机制:排他锁、共享锁、行锁、表锁、
多线程+数据库乐观锁、悲观锁:
Select * fromtable for update;//锁行记录、行锁 ----别人没法delete或Update,但可以insert
行锁锁的是修改,不是查询,一旦开始读取(查询),便不能进行delete,等全部读取完毕后再继续进行删除操作
Insert不可能产生行锁,数据库没有insert的这个物理行,所以查询时防止插入,要进行锁表
先锁表,再读,锁表所有人都可以进行读(查询)--
锁表后是既不能插入也不能删除的,也不能更改---一般不用,但也是一种可选方案
查询库-----交易库ACID ,即查询库与交易库进行分离