摘要:
1.Activiti中个人任务分配 1.1分配任务负责人: 1.1.1 固定分配,每一个任务都是固定的人进行执行 1.1.2 表达式分配: UEL表达式,统一表达式语言,在activiti当中支持两种形式,一种是value,另外一种是method形式 1.1.3 创建流程图,给每一个环节制定assi 阅读全文
摘要:
一、什么是流程定义 流程定义是线下bpmn2.0标椎去描述业务流程,通常使用activiti-explorer(web控制台)或 activiti-eclipse-designer 插件对业务流程进行建模,这两种方式都遵循 bpmn2.0 标准。使用designer 设计器绘制流程,会生成两个文件: 阅读全文
摘要:
一.Activiti7体系架构 通过加载activiti.cfg.xml文件得到ProcessEngineConfiguration对象,通过ProcessEngineConfiguration对象可以得到ProcessEngine对象 得到该对象后,可以通过流程引擎对象ProcessEngine来 阅读全文
摘要:
工作流:一套业务流程 员工编写请假条 >部门经理进行处理 >总经理 >人事登记 数据库中生成记录 工号 姓名 部门编号 请假日期 请假天数 请假事由 状态 001 张三 1 2020年3月30日 3 zxxx 0,1 0代表提交失败 1代表提交成功 部门经理:部门经理的部门编号和审批员工的部门编号要 阅读全文
摘要:
一.volatile关键字有什么用途,和Synchronize有什么区别 volatile是一个轻量级的Synchronize,保证了共享变量的可见性,能够防止脏读,被volatile关键字修饰的变量,如果值发生了改变,其他线程立刻可见 volatile能保证数据可见性,但是无法保证数据的原子性 S 阅读全文
摘要:
cas无锁机制:CAS:Compare and Swap,即比较再交换。1 .1Java内存模型:JMM(Java Memory Model) 在内存模型当中定义了一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一块工作内存,工作内存当中主内存数据的副本 阅读全文
摘要:
1.锁是干什么用的 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误 2.重入锁 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized重量级的 阅读全文
摘要:
并发队列Queue,队列其实就是一个容器 1.同步容器 Vector容器,HashTable容器,都是线程安全 如果同步容器使用foreach迭代过程中修改了元素的值,则会出现ConcurrentModificationException异常 可以使用iterator迭代器解决,但是在多线程并行情况 阅读全文
摘要:
线程实现方式: 1.继承Thread类 2.实现Runnable接口 3.线程池 4.Callable 无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题 1.线程执行没有返回值结果 2.线程执行没有办法抛出异常,只能自己通过try-catch解决 Call 阅读全文
摘要:
1.并发工具类 1.CountDownLatch:可以实现线程计数,阻塞后续线程 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实 阅读全文