关闭
当前搜索:

Java并发编程之ReentrantReadWriteLock

java.util.concurrent中有很多的同步工具类,比如ReentrantLock、Semaphore、CountLatch、CyclicBarrier、BlockingQueue、ConcurrentLinkedQueue等等,其中,很多使用的是排他锁的实现,即,同一时间只有一个线程能够访问共享的变量或临界区。因此,在某些场景下,大部分的同步工具类的性能都不尽人意。想想一下这种场景,比...
阅读(43) 评论(0)

Java并发编程之Condition

在Java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout),notify(),notifyAll(),这些方法配合synchronized关键字一起使用可以实现等待/通知模式。 同样,Condition接口也提供了类似Object监视器的方法,通过与Lock配合来实现等待/通知模式。 ...
阅读(37) 评论(0)

Java并发编程之ReenTrantLock

如果锁具备可重入性,则称作为可重入锁。像synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。举个简单的例子,当一个线程执行到某个synchronized方法时,比如说method1,而在method1中会调用另外一个synchronized方法method2,此时线程不必重新去申请锁,而是可以直接执行...
阅读(36) 评论(0)

Java多线程之线程的等待&通知机制

wait()与 notify/notifyAll()是Object类的方法,两个方法要求在调用时,线程应该已经获得了对象的锁。因此,wait()与 notify/notifyAll()经常与synchronized搭配使用,即在synchronized修饰的同步代码块或方法里面调用wait()与 notify/notifyAll()方法。 由于wait()与 ...
阅读(49) 评论(0)

Java多线程之线程的同步与锁

线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:1000个Thread都操作同一个对象Counter对象中整型变量count,每次个线程都对count加1。 public class ThreadTest { public static void main(String[] args) { Counter counter = new C...
阅读(53) 评论(0)

Java多线程之创建与启动

1、扩展java.lang.Thread类 此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 Thread 的子类应该重写该方法。 2、实现java.lang.Runnable...
阅读(42) 评论(0)

Java并发编程之Phaser

Phaser由java7中推出,是Java SE 7中新增的一个使用同步工具,在功能上面它与CyclicBarrier、CountDownLatch有些重叠,但是它提供了更加灵活、强大的用法。 CyclicBarrier,允许一组线程互相等待,直到到达某个公共屏障点。它提供的await()可以实现让所有参与者在临界点到来之前一直处于等待状态。 CountDownLatch,在完成一组正...
阅读(43) 评论(0)

Java并发编程之CountDownLatch

CyclicBarrier所描述的是“允许一组线程互相等待,直到到达某个公共屏障点,才会进行后续任务”。而CountDownlatch和它也有一点点相似之处:CountDownlatch所描述的是“在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待”。在JDK API中是这样阐述的: 用给定的计数 初始化 CountDownLatch。由于调用了 countDown()...
阅读(55) 评论(0)

Java并发编程之CyclicBarrier

CyclicBarrier,在JDK API中是这么介绍的: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。 CyclicBarr...
阅读(52) 评论(0)

Java并发编程之Semaphore

Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可, 如果没有就等待,而 release()释放一个许可。 Semaphore的结构如下: 从上面可以看出,Semaphore和ReentrantLock一样,都是包含公平锁(FairySync)和非公平锁(NonfairSync),...
阅读(72) 评论(0)

SpringMVC重要注解(五)@SessionAttributes

默认情况下SpringMVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要 使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。   1、names:这是一个字符串数组。里面应写需要存储到session中数据的名称。   2、types:...
阅读(54) 评论(0)

SpringMVC重要注解(四)@ModelAttribute

在 SpringMVC 的 Controller 中使用 @ModelAttribute 时,应用位置包括下面几种: 1、应用在方法上。  2、应用在方法的参数上。  3、应用在方法上,并且方法也使用了@RequestMapping 首先说明一下,被 @ModelAttribute 注解的方法会在Controller每个方法执行之前都执行,因此对于一个Control...
阅读(99) 评论(0)

SpringMVC重要注解(三)@RequestParam

为了验证文件绑定我们需要先做以下工作: 1.把commons-fileupload-1.3.1.jar和commons-io-2.2.jar两个jar包添加到我们项目。 2.配置我们项目中的spring-servlet.xml文件使之支持文件上传,内容如下: id="multipartResolver" class="org.springframew...
阅读(79) 评论(0)

SpringMVC整合Swagger2

Maven配置 在pom.xml中加入依赖 io.springfox springfox-swagger2 2.7.0 io.springfox springfox-swagger-ui 2.7.0 与SpringMvc集成 增加JavaConfig配置文件 @Configuration @EnableWebMvc...
阅读(64) 评论(0)

SpringMVC通过切面,实现超灵活的注解式数据校验

SpringMVC通过切面,实现超灵活的注解式数据校验...
阅读(79) 评论(0)

Java并发编程之CompletionService

1应用场景 当向Executor提交多个任务并且希望获得它们在完成之后的结果,如果用FutureTask,可以循环获取task,并调用get方法去获取task执 行结果,但是如果task还未完成,获取结果的线程将阻塞直到task完成,由于不知道哪个task优先执行完毕,使用这种方式效率不会很 高。在jdk5时候提出接口CompletionService,它整合了Executor和Bl...
阅读(87) 评论(0)

40个Java多线程问题总结

1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法: (1)发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应...
阅读(179) 评论(1)

更有效地跟踪Bug——记录带有详细参数值的SQL

在实际开发工作中,可能需要很多调试的工作,通过调试,也许能够更好地发现程序的具体问题。  假想下,今天QA同事给你报了一个bug,当然她们不会给出具体的原因,而仅仅是给出Bug导致的果,那么你如何fix 这个 bug了,显然每个人处理问题的方法是不一样的,但是大致会这样: 问QA,为什么会出现这样的Bug啊、在什么时间什么地方出现的…? 过后你可能会装作思考状,良久后说,这不是我们的问题,是部署...
阅读(220) 评论(0)

Jquery SerializeObject - 将form表单转化成Javascript object

默认情况下,Jquery无法将form转换成用于ajax参数的Javascript Object。  所以一直以来都是使用selector一个个读取数值然后自己构建Javascript Object的方式。今天偶然看到一段Jquery的插件,可以直接使用: $(form).serializeObject() 将form里面的内容转化成如下漂亮的形式,真是大快人心!...
阅读(231) 评论(0)

SpringMVC如何用Java类配置(不通过web.xml和XML方式)

DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servlet 3规范和Spring 3.1的功能增强, 可以采用一种全新的,更简洁的方式配置Spring MVC了. 下面按这种方式一个Hello World的MVC配置. Step 1:先用e...
阅读(276) 评论(0)
278条 共14页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1637381次
    • 积分:15823
    • 等级:
    • 排名:第799名
    • 原创:239篇
    • 转载:38篇
    • 译文:1篇
    • 评论:275条
    我的家园
    GitHub