摘要:byte[] data = ProxyGenerator.generateProxyClass("$Proxy0",new Class[]{dynamicProxyTest.class}); FileOutputStream out = null; try { File file=new File("E:\\$Proxy0....
阅读全文
摘要:发生死锁的原因:多个线程已经占有一个资源还要争夺互相之间手中的资源(资源就是指被上锁的内容) 死锁线程代码 线程死锁 如何定位线程死锁 使用jps -l查看所有运行的线程 使用jstack -l 线程id 查看线程的栈 结果显示线程都相互持有一个锁,并都等待对方线程手中的锁。
阅读全文
摘要:使用Reentrantlock实现 使用synchronized实现 注意:wait() await() 这些方法必须在同步代码块使用
阅读全文
摘要:一个任务提交给线程池的运行图 介绍完上面后,我们从execute()方法开始分析 这里面就是上面 addworker()方法 启动线程之后,执行的是worker中的run()方法,这个方法的里面就runWorker(this)这一个函数。下面我们看看这个函数 runWorker() 这个函数是由启动
阅读全文
摘要:普通代理(最简单的代理) 需要有两个实现同一个接口的类,一个是被代理的类,一个是代理类 被代理类中我们按照自己想实现的功能重写接口中的方法 代理类中因为需要代理被代理类,所以在代理类中需要有个被代理类的实例,这样在重写接口中的方法的时候,直接调用代理类中的实例中对应的方法直接实现代理功能 具体代码的
阅读全文
摘要:首先贴上源码中的注释 在一个String类上调用这个方法的时候如果常量池中存在和这个String对象相同的对象的时候,直接返回常量池中的常量,如果常量池中不存在这个对象,就直接将其将其加入常量池,并且返回一个引用。 intern()方法直接从常量池中取值,这样会比直接从堆中取值快。 执行“==”效率
阅读全文
摘要:当生成一个内部类对象的时候,此对象与制造他的外围对象有着一种关系,内部类对象可以访问其外围类对象的所有成员。 如何在外面创建内部类,使用外部类的实例创建内部类,还有一种就是直接使用函数返回内部类的实例 内部类中返回外部类的引用 内部类可以使用private修饰,这时候只能外部类访问内部类,这种形式是
阅读全文