摘要: 系列目录 【详解】ThreadPoolExecutor源码阅读(一) 【详解】ThreadPoolExecutor源码阅读(二) 【详解】ThreadPoolExecutor源码阅读(三) 线程数量的维护 线程池的大小有两个重要的参数,一个是corePoolSize(核心线程池大小),另一个是max 阅读全文
posted @ 2018-11-02 18:29 猫毛·波拿巴 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 系列目录 【详解】ThreadPoolExecutor源码阅读(一) 【详解】ThreadPoolExecutor源码阅读(二) 【详解】ThreadPoolExecutor源码阅读(三) AQS在Worker中的应用——标识空闲or非空闲工作线程 我对这个上锁一直搞不懂,虽然有注释说是允许中断啥的 阅读全文
posted @ 2018-11-01 20:47 猫毛·波拿巴 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 系列目录 【详解】ThreadPoolExecutor源码阅读(一) 【详解】ThreadPoolExecutor源码阅读(二) 【详解】ThreadPoolExecutor源码阅读(三) 工作原理简介 ThreadPoolExecutor会创建一组工作线程,每当一个工作线程完成其任务的时候,会向任 阅读全文
posted @ 2018-11-01 20:00 猫毛·波拿巴 阅读(413) 评论(0) 推荐(0) 编辑
摘要: JNI中,C/C++代码里创建的资源不由Java GC处理,故这里的资源必须由C/C++代码明确释放。在JNI中,C/C++回调Java的方法是调用一个CallXXMethod函数来实现的,如果回调的方法结束,C/C++执行下一行代码。 故猜测,由C/C++创建的OS线程应该会在运行完run方法后释 阅读全文
posted @ 2018-10-28 19:07 猫毛·波拿巴 阅读(784) 评论(4) 推荐(0) 编辑
摘要: 首先,我们得清楚为何要解耦? 耦合的坏处就是,牵一发而动全身,比如,当我更改了类A或其子类的时候,类B也要进行修改。这里,解除耦合,就意味着,即使你Receiver怎么改,添加了多少,删除了多少。我Invoker都不需要做什么改动。 有人会说,这不是很好办吗,我定义一个接口,每个Receiver都实 阅读全文
posted @ 2018-10-28 03:00 猫毛·波拿巴 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 实现线程任务有两种方式,一种是创建Runnable/Callable对象,传递给Thread。另一种是子类重写Thread的run方法。 我觉得前一种像极了命令模式,或者说应该是命令模式的一个使用案例。 相似如下: (1)Runnable 接口,只定义一个"()V"(表示无参,返回值为void)的方 阅读全文
posted @ 2018-10-28 02:22 猫毛·波拿巴 阅读(733) 评论(1) 推荐(1) 编辑
摘要: 案例四:回调实例方法与静态方法 描述:此案例将通过Java调用的C语言代码回调Java方法。 要想调用实例对象的方法,需要进行以下步骤: 1. 通过对象实例,获取到对象类的引用 => GetObjectClass() 2. 通过类引用,获取到方法ID => GetMethodID() 需要提供方法名 阅读全文
posted @ 2018-10-26 16:56 猫毛·波拿巴 阅读(1126) 评论(0) 推荐(0) 编辑
摘要: 案例三:C代码访问Java对象的实例变量 获取对象的实例变量的步骤: 1. 通过GetObjectClass()方法获得此对象的类引用 2. 通过类引用的GetFieldID()方法获得实例变量的Field ID. 你需要提供 变量名,字段类型描述符 对于Java 类, 字段描述符格式为 "L<类全 阅读全文
posted @ 2018-10-26 15:33 猫毛·波拿巴 阅读(1363) 评论(0) 推荐(1) 编辑
摘要: 案例二:传递参数给C代码,并从其获取结果 注:这里传递的参数是基本类型的参数,在C代码中有直接的映射类型。 此案例所有生成的所有文件如下: (1)编写案例二的Java代码,如下: 这里我们定义了一个native方法,此方法用于计算两数平均值。将两个Java int类型的值传递给C代码,使其计算并返回 阅读全文
posted @ 2018-10-26 15:30 猫毛·波拿巴 阅读(1828) 评论(0) 推荐(0) 编辑
摘要: 前言: 一提到JNI,多数编程者会下意识地感受到一种无法言喻的恐惧。它给人的第一感觉就是"难",因为它不是单纯地在JVM环境内操作Java代码,而是跳出虚拟机与其他编程语言进行交互。 你可能至今还没听说过这个技术,但是如果你是一个源码爱好者,或者有翻阅过JDK的一些源码,那你一定有接触过native 阅读全文
posted @ 2018-10-22 21:09 猫毛·波拿巴 阅读(8658) 评论(0) 推荐(3) 编辑