06 2016 档案
摘要:需求:有一张表9亿多条数据,数据加索引总数据量61GB。考虑到这张表的大部分数据都不会再被使用并且大数据量可能影响整库的性能,所以决定将表里某一个时刻之前的数据备份到一张新表中,待备份完成后将旧表中已经备份的数据删除。由于数据量太大,不适合让DBA直接做备份。 方案1 main线程分页读取旧表数据,
阅读全文
摘要:线程状态验证 运行程序控制台输出结果如下: 运行程序,控制台打印结果如下: 线程对象关联线程组:1级关联 所谓的1级关联就是父对象中有子对象,但是并不创建孙对象。 运行程序,控制台打印结果如下: 线程对象关联线程组:多级关联 所谓的多级关联就是父对象中有子对象,子对象中再创建子对象,也就是出现孙对象
阅读全文
摘要:立即加载/饿汉模式 立即加载就是使用类的时候已经将对象创建完毕。 运行程序,控制台打印结果如下: 控制台打印的hashCode是同一个值,说明对象是同一个,也就实现了立即加载型单例模式。 延迟加载/懒汉模式 延迟加载就是在调用get()方法时实例才被创建 程序运行结果如下: 此实验虽然取得一个对象的
阅读全文
摘要:Timer类主要负责计划任务,也就是在指定的时间开始执行某一个任务。 方法schedule(TimerTask task, Date time) 程序运行结果如下: 任务虽然执行完了,但是进程还没有销毁。 创建Timer的源码如下: 由构造方法可知,创建一个Timer就是启动一个新的线程,这个新启动
阅读全文
摘要:使用ReentrantLock类 在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等功能,而且在使用上也比synchronized更
阅读全文
摘要:通过管道进行线程间通信:字节流 Java提供了各种各样的输入/输出流Stream可以很方便地对数据进行操作,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据,一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过使用管道,实现不同线程间的通信,无需借助于类似临时
阅读全文
摘要:线程是操作系统中独立的个体,但这些个体如果不经过特殊处理就不能成为一个整体。线程间的通信就是成为整体的必用方案之一。线程间通信可以使系统之间的交互性更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控监督。 等待通知机制 在调用wait()之前,线程必须获得该对象
阅读全文
摘要:数据类型String的常量池特性 在JVM中具有String常量池缓存的功能。 控制台打印结果如下: 出现这种情况就是因为Sting的两个值都是AA,两个线程持有相同的锁,所以造成线程B不能执行。因此在大多数情况下,同步synchronized代码块都不实用String作为锁对象,而改用其他,比如n
阅读全文

浙公网安备 33010602011771号