6 SunnyMarkLiu

尚未进行身份认证

我要认证

https://github.com/SunnyMarkLiu

等级
TA的排名 2w+

Java多线程总结(7)synchronized的缺陷及concurrent.locks包类结构简介

1 synchronized的缺陷参考:Java并发编程:Lock   synchronized是java中的一个关键字,也就是说是Java语言内置同步的特性。那么为什么会出现Lock呢?   如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1. 获取锁的线程

2015-12-22 15:23:29

Java多线程总结(6)— 线程池的基本使用和执行流程分析

1 线程池的实现原理及基本类结构  合理利用线程池能够带来三个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。  Executor线程池框架的最大优点是把任务的提

2015-12-18 21:36:17

Java多线程总结(5)— 原子性、可见性、有序性和并发库的原子性操作

1 原子性、可见性和有序性的基本概念  1.原子性(Atomicity)  由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock与unlock操作直接开放

2015-12-17 15:25:05

Java多线程总结(4)— 线程范围内数据操作的隔离及ThreadLocal类

1. Java内存模型  在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不会有

2015-12-16 16:39:23

Java多线程总结(3)— Timer 和 TimerTask深入分析

1. 基本概念  java.util.Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread),使它可以在将来某一时刻执行。 Java的Timer类可以调度一个任务运行一次,或定期循环运行。 Timer tasks should complete quickly. 即定时器中的操作要尽可能花费短的时间。  java.util.TimerTask:是一个抽象类,它实现了

2015-12-15 22:31:27

Java多线程总结(2) — 线程生命周期中常用方法

1. 线程的状态回顾  线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:(原文更好理解,就不翻译了)New When we create a new Thread object using new operator, thread state is New Thread. At this point, thread is not alive and it’s a sta

2015-12-14 22:19:13

Java多线程总结(1) — 创建线程的两种方式

1. 基本概念1.1 ProcessA process is a self contained execution environment and it can be seen as a program or application. However a program itself contains multiple processes inside it. Java runtime enviro

2015-12-14 14:31:14

java反射机制(3)- 动态类加载与重载(Load and Reload)

1 类加载器 The ClassLoader  Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由JVM中的类装载器Class Loader完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 。   当一个类完成加载时,所涉及的类也都会被加载。类加载过程是一个递归的模式。但并不一定是一个应用里面所有类都会被加载,与这个被加载类的引用链无关的类是不会被加载的,直到有引用关系的

2015-12-04 15:31:16

Computer English

Java Reflection Tutorial1. Only scratch the surface of Java Reflection.   仅仅涉及java反射机制的皮毛2. This tutorial will also clear up some of the confusion out there about what Generics information i

2015-12-03 18:13:32

java反射机制(2)- 实践:反射机制+动态代理实现模拟RMI远程方法调用

转载请注明出处:反射机制+动态代理实现模拟RMI远程方法调用 1 涉及主要知识点  1、RMI(Remote Method Invocation):远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外 一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。

2015-11-29 21:46:41

java反射机制(1)- 知识点总结Java Reflection API操作

转载需注明出处:java反射机制(1)- 知识点总结Java Reflection API操作1 什么是反射机制  什么是反射机制?简单点说就是程序在运行时能够获取自身的信息。在java中,只要给定类的全名,就可以通过反射机制来获取类的所有信息。   复杂点说就是:通过Class类,可以在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这

2015-11-28 17:02:58

Struts2系统学习(10)文件上传与下载案例及原理分析

10. 文件上传  第一步:上传组件依赖与commons-fileupload-1.3.1.jar和commons-io-2.2.jar。这两个文件可以从http://commons.apache.org/下载或struts解压缩包中获取。   第二步:把form表单的enctype设置为:“multipart/form-data“,如下:<form action="/Struts2Study/u

2015-11-17 17:03:46

Struts2系统学习(17)Struts2标签库详解

Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。头声明:struts2的标签可以分为五大类:一、逻辑控制标签(1)条件标签条件标签主要有3个子标签,用于执行基本的条件流转[

2015-11-16 12:44:49

Struts2系统学习(16)OGNL表达式及基本原理分析

16. OGNL表达式16.1 OGNL表达式语言简介  OGNL (Object Graph Navigation Language)对象图导航语言。Struts2框架使用OGNL作为默认的表达式语言。   OGNL相对其它表达式语言具有下面几大优势:支持对象方法调用,如xxx.doSomeSpecial();支持类静态方法的调用和值的访问,表达式的格式:   @[类全名(包括包路径)]@

2015-11-15 22:52:09

Struts2系统学习(15)Struts2校验框架基本原理分析

15 Struts2校验框架  Struts2提供的验证框架,功能强大而且简单易用。那么一个好的验证框架需要考虑哪些因素呢?    1. 验证功能的复用性   比如都是对一个int数据类型的验证,验证的是它的数据范围,如果验证功能抽象的好,就可以复用同样的验证功能,省去重复开发的麻烦。 2. 验证功能的可扩展性   是不是可以自己扩展验证功能,并保证扩展功能和原有的框架功能一样使用。

2015-11-14 20:53:56

Struts2系统学习(14)输入校验-基于XML配置方式实现校验

14. 输入校验<font size=4>&emsp;&emsp;在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。  对于输入校验,struts2提供了两种实现方法:  1. 采用手工编写代码实现。  2. 基于XML配置方式实现。<font size=4 color=#1099ff>&emsp;&emsp;这一节,主要讨论基于XML配置方式实现校

2015-11-14 11:32:13

Struts2系统学习(13)输入校验-采用手工编写代码实现校验

13. 输入校验  在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。   对于输入校验,struts2提供了两种实现方法:   1. 采用手工编写代码实现。   2. 基于XML配置方式实现。   这一节,主要讨论采用手工编写代码实现校验。13.1 对action所有方法进行校验  通过重写validate() 方法

2015-11-14 11:26:03

Struts2系统学习(12)自定义拦截器

拦截器必须是无状态的,不要使用在API提供的ActionInvocation之外的任何东西。要求拦截器是无状态的原因是Struts 2不能保证为每一个请求或者action创建一个实例,所以如果拦截器带有状态,会引发并发问题。创建步骤:直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor或者继承类com.opensymphony.

2015-11-13 21:07:10

Struts2系统学习(11)多文件上传

11. 多文件上传  多文件上传类似与单文件上传。下面直接通过案例说明。   (1)提交表单:<form action="/Struts2Study/uploadFiles.action" enctype="multipart/form-data" method="post"> 文件1:<input name="uploadFile" type="file"><br> 文件2:<i

2015-11-13 20:52:32

Struts2系统学习(9)Action中操作request/session/application等对象

9. Action中操作request/session/application对象  在action中操作request/session/application属性:   方法一:直接在scope范围内put数据ActionContext actionContext = ActionContext.getContext();

2015-11-13 20:08:50

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!