1.线程间通信
同步阻塞消息处理:
等待处理结果,拿到结果才结束
异步非阻塞消息处理:
提交Event,生成单号,交互结束,后续根据单号直接查询处理结果
单线程间通信
通过wait和notify进行阻塞和唤醒控制
1.线程间通信
同步阻塞消息处理:
等待处理结果,拿到结果才结束
异步非阻塞消息处理:
提交Event,生成单号,交互结束,后续根据单号直接查询处理结果
单线程间通信
通过wait和notify进行阻塞和唤醒控制
1.monitorenter
每一个对象都与一个monitor相关联,一个monitor的lock的锁只能被一个线程在同一时间获得。在一个线程尝试获得与对象关联monitor的所有权时会发生如下的几件事情:
①如果monitor的计数器为0,则意味着该monitor的lock还没有被获得,某个线程获得之后将立即对该计数器加一,从此该线程就是这个monitor的所有者
②如果一个已经拥有该monitor所有权的线程重入,则会导致monitor计数器再次累加
③如果monitor已经被其他线程所拥有,则其他线程尝试获得该monitor的所有权时,会被陷入阻塞状态直到monitor计数器为0,才能再次尝试获取对monitor的所有权
1.java进程的内存大小为:堆内存 + 线程数量*栈内存
2.堆内存不变,栈内存越大,可创建的线程数量越小,栈变化为系数关系
1.ThreadLocal是什么?
线程局部变量,有效作用域仅线程执行过程,在一定程度上可保证值在多线程环境中的安全性;
每个Thread对象内部都维护了一个ThreadLocalMap这样一个ThreadLocal的Map,可以存放若干个ThreadLocal。每次获取或者设置都是对该ThreadLocal进行的操作,是与其他线程分开的。
1.查询当前正在运行的java进程的PID
jps -v
2.获取指定线程信息并生成日志
1.背景
Controller指SpringMVC项目中用于定义接口信息的类,该类一般会被@Controller或@RestController等SpringMVC相关注解标记;
@Transactional指spring-tx包中定义的事务注解,被该注解标记的方法或类将成为一个整体,“同进同退”;
在开发过程中,注解是我们的神兵利器,但如果不恰当的使用将会造成严重的问题。
什么是元注解?
简单来说,定义注解时使用到的Java官方提供的注解被称为元注解;
Java定义了如下四种元注解:
1.MD5
MD5是一种非常著名的散列算法,散列算法具有如下特点:
--新增单个字段 alter table table_A add item_a varchar2(10) default '默认值' not null; --新增多个字段 alter table table_A add(item_a varchar2(10) default '默认值' not null, item_b varchar2(10) default '默认值' not null); --删除字段 alter table table_A drop column item_a; --修改表字段属性 alter table table_A modify item_a varchar2(100); --添加主键 ALTER TABLE table_A ADD CONSTRAINT tb_a_pk PRIMARY KEY(item_a); --添加索引 ALTER TABLE table_A ADD CONSTRAINT tb_a_un UNIQUE(item_b); --删除约束 alter table table_A drop constraint tb_a_pk; --新增索引 Create index idx_tb_a_a on table_A(item_a,item_b); --修改索引 alter index idx_tb_a_a rebuild table_A(item_a); --删除索引 drop index idx_tb_a_a; --重建索引 alter index idx_tb_a_a rebuild online; --删除序列 drop sequence tb_a_sq; --分区拆分(Range类型使用at,List使用Values;全局索引会失效) alter table table_A split partition tb_a_p values('1') into ( partition tb_a_p_1 tablespace system, partition tb_a_p_2 tablespace system); --合并分区(全局索引会失效) alter table table_A merge partitions tb_a_p_1,tb_a_p_2 into partition tb_a_p; --移动分区(全局索引会失效) alter table table_A move partition tb_a_p tablespace system; --truncate分区(全局索引会失效) alter table table_A truncate partition(tb_a_p); --drop分区(全局索引会失效) alter table table_A drop partition tb_a_p;