上一页 1 ··· 3 4 5 6 7
摘要: 类图: 先看各自的源码: Thread与Runnable其实是一个装饰器模式。 从类的结构来看: Runnable,Callable,Future接口本是互相独立的,没有直接的关系。 而Thread的一系列构造函数需要的是Runnable对象,所以Callable对象并不适合Thread构造函数,而 阅读全文
posted @ 2017-09-23 15:06 小路不懂2 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池是可以控制线程创建、释放、并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡。 类图 Executor Executor是最基本的执行接口:“执行者”接口,只提供了一个方法:可以用来执行已经提交的Runnable任务对象,这个接口提供了一种将“任务 阅读全文
posted @ 2017-09-23 14:39 小路不懂2 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 背景 在学习JDK源码的时候,免不了需要调试JDK的源码。 比如:想理解ConcurrentHashMap的put(K k, V v)方法,JDK自带的rt.jar文件是支持断点调试,但是却看不到变量的具体值,对于理解实现非常不方便。 如下: 在map.put(“sdf”, “ac”)处增加断点,然 阅读全文
posted @ 2017-09-23 14:23 小路不懂2 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 引用 系统启动一个新线程的成本是比较高的,因为涉及与操作系统交互。使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象 或Callable对象传给线程池,线程池就会启动一个线程来执行它 阅读全文
posted @ 2017-09-23 14:18 小路不懂2 阅读(262) 评论(0) 推荐(0) 编辑
摘要: Fork/Join Java7提供了Fork/Join来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。 类图 Java7提供了ForkJoinPool来支持将一个任务拆分为多个小任务并行计算,再把多个小任务的结果合并成总的计算结果。ForkJoinPool是 阅读全文
posted @ 2017-09-23 14:17 小路不懂2 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 前言 HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。 数字中的第一位指定了响应类型,后两位无分类,响应类别主要一下5种: HTTP状态码的类别 类别 原因短语 1xx Informational(信息性状态码) 接收的请求正在处理 2xx Su 阅读全文
posted @ 2017-09-23 14:15 小路不懂2 阅读(239) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数初始化CountDownLatch。调用countDown()计数减一,当计数到达零之前await()方法会一直阻塞,计数无法被重置。 public class Count 阅读全文
posted @ 2017-09-23 14:14 小路不懂2 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 阻塞场景 BlockingQueue阻塞队列,阻塞的情况主要有如下2种: 1. 当队列满了,进行入队操作阻塞 2. 当队列空了,进行出队操作阻塞 阻塞队列主要用在生产者/消费者模式中,下图展示了一个线程生产,一个线程消费的场景: BlockingQueue接口 1. 抛出异常:如果操作不能马上进行, 阅读全文
posted @ 2017-09-23 14:11 小路不懂2 阅读(334) 评论(0) 推荐(0) 编辑
摘要: Runnable: Runnable是个只有一个方法的接口。 Thread: Thread实现了Runnable接口,而且还组合了一个Runnable,可以看出,实现的方法内部是调用组合类的方法,这其实就是装饰模式。 阅读全文
posted @ 2017-09-23 14:04 小路不懂2 阅读(411) 评论(0) 推荐(0) 编辑
摘要: Thread:java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类,可以通过继承Thread类来创建并启动多线程。 Runnbale:可以通过实现Runnable接口来创建多线程,创建Runnable实现类的实例,并以此作为Thread的target来创建Thread对象, 阅读全文
posted @ 2017-09-23 14:03 小路不懂2 阅读(1415) 评论(0) 推荐(0) 编辑
摘要: 关键字synchronized与wait和notify/notifyAll方法相结合可以实现等待/通知模式,类ReentrantLock也可以实现同样的功能,但需要借助于Condition对象。Condition类是JDK5中出现的技术,使用它有更好的灵活性,比如可以实现多路通知功能,也就是在一个L 阅读全文
posted @ 2017-09-23 14:00 小路不懂2 阅读(331) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务。这样做虽然保证了实例变量的线程安全,但效率却是非常低下的。JDK中提供了一个读写锁ReentrantReadWriteLock,使用它可以加快运行效率,在某些不需要操 阅读全文
posted @ 2017-09-23 14:00 小路不懂2 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中新增了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等功能,而且在使用上也比synchronized更加的灵活。 调用ReentrantLo 阅读全文
posted @ 2017-09-23 13:58 小路不懂2 阅读(268) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal 变量值的共享可以使用public static变量的形式,所有的线程都使用同一个public static变量。如果想实现每一个线程都有自己的共享变量该如何解决呢?JDK中提供的ThreadLocal正是解决这样的问题。 ThreadLocal主要解决的就是每个线程绑定自己的 阅读全文
posted @ 2017-09-23 12:11 小路不懂2 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 在很多情况下,主进程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了。方法join()的作用是等待线程对象销毁。 package or 阅读全文
posted @ 2017-09-23 12:10 小路不懂2 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 1.0 引言 什么是算法? 为什么要进行算法研究? 相对于计算机中使用的其他技术来说,算法的作用是什么? 1.1 算法 算法定义:就是定义良好的计算过程,它取一个或一组值作为输入,并产生一个或一组值作为输出。亦即,算法就是一系列的计算步骤,用来将输入数据转换成输入出结果。 算法可以解决那些类型的问题 阅读全文
posted @ 2017-09-23 12:06 小路不懂2 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 提炼函数(Extract Method) 你有一段代码可以被组织在一起并独立出来,将代码放进一个独立函数中,并让函数名称解释该函数的用途。 转换为: 当看见一个过长的函数或者一段需要注释才能让人理解用途的代码,就可以将这段代码放进一个独立的函数中。 如果每个函数的粒度都很小,那么函数被复用的机会就更 阅读全文
posted @ 2017-09-23 12:04 小路不懂2 阅读(194) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7