
暂无个人介绍
2022年10月
Executor是MyBatis执行者接口,缓存维护:这里的缓存主要是为一级缓存服务,功能包括创建缓存Key、清理缓存、判断缓存是否存在。
进行查询操作的代码如下:
{
ErrorContext.instance().resource(ms.getResource()).activity("executing an update").object(ms.getId());
if (closed) {
throw new ExecutorException("Executor was closed.");
}
// 清除缓存
clearLocalCache();
return doUpdate(ms, parameter);
}
Executor只提供了两个基本功能:改、查、维护缓存。(增删改都归类于改)。同样,Executor也提供辅助功能:提交、关闭执行器、批处理刷新。
SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。 ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map内,供下一次使用。简言之,就是重复使用Statement对象。 BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。
Executor接口是线程池中最基础的部分,定义了一个用于执行Runnable的方法,这也是Executor中重要的接口,是执行Runnable类型任务的接口。
执行器抽象类:BaseExecutor 用来实现重复操作,如:一级缓存、获取连接等。
基本功能:改、查,没有增删的原因是,所有的增删操作都可以归结到改。 事务管理:提交、回滚、关闭、批处理刷新。
1.动态代理MapperProxy
2.SQL会话SqlSesson
3.执行器Executor
4.JDBC处理器StatementHandler
锁对象的工作方式是通过代码运行期间为给定对象获取互斥锁来实现的,代码区是共享的,即每个线程都可以执行相同的函数。
因为表示接口是属于类的,接口不可以创建对象,所以不属于对象,所以要用final修饰,要保证接口所定义的常量不能被实现类去修改。
会进行实例化,进行提交操作,锁定以及加锁操作,所有一系列的操作都可以进行。
CALL FUNCTION 'DEQUEUE_E_TABLE' EXPORTING MODE_RSTABLE = 'E' TABNAME = 'SFLIGHT' * VARKEY = //作用和加锁的一样 * X_TABNAME = ' ' * X_VARKEY = ' ' _SCOPE = '3' * _SYNCHRON = ' ' * _COLLECT = ' '.
private Object object = new Object(); public void run() { //synchronized的里面给个对象,这个对象是任意对象。 synchronized (object) { //同步代码块 for (int i = 0; i < 6; i++) { box.setNum(1 + i); }
}
}
在系统中修改数据时锁对象可以防止数据不一致现象发生,选择锁参数标签页。
1、获取当前线程调用lock()方法的次数 2、查询当前线程保持此锁定的个数,即调用次数
Executor、ReuseExecutor和BatchExecutor这三个实现类。
用来实现重复操作,如:一级缓存、获取连接等。 进行增、删的操作。
Executor接口的具体实现就是一个具体中介者角色,每个Runnable就相当于同事角色。
Executor框架的作用就是把线程的执行(即一个任务)与线程的分配隔离开。 即,把一个任务交给Executor框架,Executor负责为任务分配线程去执行。
E:专用、积累,被锁定的数据只能被一个用户来读取,不允许其他用户来进行锁操作。一般主数据的锁定都会使用该类型。
S:共享。本身不需要修改该数据,但是在读取数据时候不允许该数据被其他用户以E或者X的模式来进行修改,允许被锁定数据被多个用户以S来读取,也就是不能被其他用户修改可以被其他用户读取。
X:专用,不累计。与E模式类似,在某用户对该数据加了X类型的锁定后,本用户可以继续为该数据添加E和S模式的锁。