随笔分类 - Java
摘要:execute方法示意图如上,workers为HashSet类型,存储初始化任务RUNNING或SHUTDOWN但firsttask为null的worker。 workQueue为BlockingQueue,存储提交的执行任务。
阅读全文
摘要:1、Serial: 标记整理算法。 单线程,适合单CPU,效率高,STW。 Old: 单线程回收老年代,CMS 发生Concurrent Mode Failure的备选方案。 2、Parallel: New: Serial多线程版。 默认使用线程数和CPU个数相同, 可通过+UseParallelG
阅读全文
摘要:JDK源码如是说: ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get或set方法访问)时 能保证各个线程里的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的, 用于关联线程和线程的上下文。 Thread
阅读全文
摘要:涉及到Hash,即通过Key的哈希值,存取对应value。 注意,同一个key的哈希值必须唯一,不可变。 1、HashMap,key为null时,存在tab[0]中。 value可为空,key的hash不同的话,可存多个。 2、HashSet,采用HashMap,add(value)即采用HashM
阅读全文
摘要:1.日志 多机器,记录当前机器IP,当前用户,当前参数 2.接口 定义接口传参类,Lombok协同开发。 3.函数 重载,可适应多情况传参。 参数用其继承或实现的顶级类或接口。 4.工具类 自定义工具类,其中引用第三方工具。 5.异常 自定义异常,AOP拦截。
阅读全文
摘要:java.nio.channels.AsynchronousChannel提供了异步写文件方法, 具体代码如下: public static void syncWrite(String path){ File file = new File(path+"warn.log"); if(!file.ex
阅读全文
摘要:public static String getCurrentIp() { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkI
阅读全文
摘要:1、特点: 已获取锁的线程再次请求锁,可以直接获取。 2、实现: 自定义内部类 Sync,继承 AbstarctQueuedSynchronizer : 2.1、获取锁:lock() a、公平锁: acquire(1) b、非公平锁: if (compareAndSetState(0, 1)) //
阅读全文
摘要:Jvm 默认几秒后开启偏向锁 1、偏向锁 A线程独占锁,不用上下文切换。对象头标识。 2、轻量锁 A线程拥有锁,B获取,竞争,自旋(jdk1.7以后智能自转) 3、重量锁 B线程自旋获取不到锁,膨胀重量锁,阻塞A线程。直到B执行完。
阅读全文
摘要:1、volatile/synchronized volatile修饰变量,synchronized修饰访问方法: 每次只允许一个线程修改共享变量。 2、wait/notify wait阻塞A线程,B线程处理完后,唤醒A线程。 3、通道 out.connect(in),输入输出通道相连。 4、thre
阅读全文
摘要:核心线程 corePoolSize 队列 最大线程数 maximumPoolSize 线程池内无任务,队列作为参数,就算队列里面有任务,线程池也不会马上执行它们。 新任务提交到线程池: 1、核心线程池的线程未都执行任务,创建线程执行。( 当一个线程完成任务时,它会从队列中取下一个任务来执行。 当一个
阅读全文
摘要:场景: 分批从大列表 blist 读取数据,执行验证过滤,符合条件的加入到列表中。然后执行批量入库操作。 思路: 多任务从 blist 取数据执行,采用Excuetors框架; 多线程插表,列表需要线程安全,采用ConcurrentLinkedQueue; blist 取数完毕,执行批量入库操作,采
阅读全文
摘要:1、CountDownLatch 等待一个或多个线程执行完,再执行。 栗子:飞机起飞前各个检查完,起飞。 初始化: CountDownLatch countD = new CountDownLatch(3); 起飞进程wait(),阻塞; 每个检查完,countD.countDown(); 当cou
阅读全文
摘要:jdk1.8 一、统计各个区域所占大小 Jconsole监控 jstat -gcutil pid 500 20 查看各区域所占比例 二、设置堆区域大小 堆:old eden suvivor 非堆:meta 方法缓存 堆: 1、-Xmx:最大堆,系统物理内存1/4,-Xms大小同-Xmx 2、年轻代:
阅读全文
摘要:linux 2cpu 16g内存 ,tomcat7 JAVA_OPTS="-Xmx1024m -Xms1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m"cygwin=false 堆内存: xmx,xms最大为物理内存的1/4,同样大小,省
阅读全文
摘要:命令行工具名类似UNIX命令,区别:名前带 “j" 1、jps 查看当前本机Java进程,即LVMID,可查Java id,名,详细描述 jps -l ——详细包信息 jps -m ——id,名 2、jstat vm 状态 假设当前LVMID为6620 jstat -gcutil 6620 查看当前
阅读全文

浙公网安备 33010602011771号