该文被密码保护。 阅读全文
posted @ 2018-09-28 21:41 crazy_runcheng 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 一、动态代理 在使用 spring 进行开发时,经常会使用到动态代理。当我们要实现某个功能时,我们会编写一个 Service 接口,和一个(或者多个)实现该接口的 ServiceImpl 类。这么做的好处是可以使得避免耦合。我们再需要使用该方法是,并不会去显性的创建一个 ServiceImpl,我们 阅读全文
posted @ 2018-09-28 19:48 crazy_runcheng 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 一、什么是反射 java 运行时,识别对象和类的信息的传统方式是 RTTI,它要求我们再编译阶段就确定所以对象的信息,比如,如何去构造它,参数是什么...而反射机制则是在运行阶段去确认这些信息。 二、反射的实现 简单的例子,假设我们有一个类 ReflectModel: 一般情况下,我们创建该类的实例 阅读全文
posted @ 2018-09-28 15:04 crazy_runcheng 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 一、前言 java 的 java.util.concurrent 是 java 用于提供一些并发程序所需功能的类包。它的功能全面且强大,在前面,我们已经使用过原子基本变量,BlockingQueue 等类。现在,我们需要更加深入的去了解 JUC 的强大功能。 二、CountDownLatch 该类用 阅读全文
posted @ 2018-09-19 12:56 crazy_runcheng 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 五、使用显示的 Lock 和 Condition 对象 在 JUC(java.util.concurrent) 中,还有额外的显示工具可以用来重写WaxOMatic.java。使用互斥并允许任务挂起的基本类型是 Condition,可以通过在 Condition 上调用 await() 来挂起一个任 阅读全文
posted @ 2018-09-17 11:06 crazy_runcheng 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 一、前言 在第二章的时候,我们学会了通过锁的方式来同步多个任务,从而使得一个任务不会干涉另一个任务的资源。也就是说,多个任务在交替步入某项共享资源(通常是内存),可以使用互斥来使得任何时刻只有一个任务可以访问这项资源。而接下来,我们需要学习如何使任务彼此之间可以协作,以使得多个任务可以一起工作去解决 阅读全文
posted @ 2018-09-11 21:14 crazy_runcheng 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一、线程的四种状态 在 java 中,一个线程可以处于下列四种状态之一: 1)新建(new):当线程被创建时,它会短暂的处于这种状态。在这种状态下时,线程已经分配了必需的系统资源,并执行了初始化。此刻线程已经有资格获得 cpu 时间了,之后调度器将把这个线程转变为就绪或阻塞状态。 2)就绪(Runn 阅读全文
posted @ 2018-09-09 07:47 crazy_runcheng 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 一、前言 在单线程的情况下,我们很少去考虑资源冲突的问题。而在多线程中,单个实例的某个方法或者变量会经常出现被多个线程访问的情况。最常见的问题,在线程A访问f()进行到一半时,线程B也调用了f()方法。这自然会导致资源使用时出现我们不愿意见到的情况。比如下面这个例子。 EvenGenerator 是 阅读全文
posted @ 2018-09-06 10:52 crazy_runcheng 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 一、基本的线程机制 java的并发编程可以将程序划分成多个分离并且能够独立运行的任务。每个独立任务都通过一个执行线程来驱动。一个线程就是在进程中的一个单一的顺序控制流,因此,单个进程可以拥有多个并发执行的任务。在运行时,CPU将轮流给每个任务分配其占用时间。 二、定义任务 在java中,定义一个任务 阅读全文
posted @ 2018-08-30 17:14 crazy_runcheng 阅读(390) 评论(0) 推荐(0) 编辑