自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Java并发编程:线程池的使用

在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以通过线程池来达到这...

2017-02-20 11:45:20 80

原创 Java并发编程:并发容器之CopyOnWriteArrayList(转载)

原文链接:  http://ifeve.com/java-copy-on-write/    Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这 个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用 CopyOnWr...

2017-02-20 11:44:41 81

原创 Java并发编程:Callable、Future和FutureTask

在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到...

2017-02-20 11:42:03 76

原创 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。  以下是本文目录大纲:  一.CountDownLatch用法  二.CyclicBarrier用法  三.Semaphore用法  若有不正之处请多多谅解,并欢迎批评指正。 ...

2017-02-20 11:41:50 83

原创 Java并发编程:阻塞队列

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发 容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来 讨论另外一类容器:阻塞队列。  在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实...

2017-02-20 11:40:54 85

原创 Java并发编程:并发容器之ConcurrentHashMap(转载)

下面这部分内容转载自:  http://www.haogongju.net/art/2350374  JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程...

2016-11-08 20:49:15 80

原创 Java并发编程:同步容器

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。  以下是本文的目录大纲:  一.为什么会出现同步容器?  二.Java中的同步容器类  三.同步容器的缺陷  若有不正之处请多多谅解,并欢迎批评指正。  请尊重作者劳动成...

2016-11-08 20:48:46 51

原创 Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。 由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我...

2016-11-08 20:47:25 62

原创 Java ConcurrentModificationException异常原因和解决方法

在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。  以下是本文目录大纲:  一.ConcurrentModificationException异常出现的原因  二.在单线程环境下的解决办法  ...

2016-11-08 20:45:45 368

原创 Java并发编程:深入剖析ThreadLocal

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下 ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现 原理和使用需要注意的地方,最后给出了两个应用场景。  以下是本文目录大纲:  一.对ThreadLocal的理解  二.深入解析ThreadLocal类  三.Th...

2016-11-08 20:45:20 82

原创 Java并发编程:Lock(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3923167.html 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。  也许有朋友会问,既然都可以通过syn...

2015-10-29 16:26:36 59

原创 Java并发编程:synchronized(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3923737.html 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。  以下是本文的目录大纲:  一.什么时...

2015-10-29 16:24:56 78

原创 Java并发编程:Thread类的使用(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3920357.html 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。  以下是本文的目录大纲:  一...

2015-10-29 16:23:19 67

原创 Java并发编程:如何创建线程?(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3913517.html 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲:  一.Java中关于应用程序和进程相关的概念...

2015-10-29 16:22:01 60

原创 Java多线程基础:进程和线程之由来(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3910667.html 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发 编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并 发编程主题之前,我们先来了解一下进程和线程的...

2015-10-29 16:18:56 80

原创 WINDOWS如何安装MYSQL数据库

[size=medium]开发过程中肯定会用到数据库,从网上找了一些资料介绍了本地安装mysql数据库的过程,可参考[url]http://www.360doc.com/showweb/0/0/228433046.aspx[/url]。主要过程如下:1、下载mysql的安装文件,比如Mysql-4.1.14-win32.zip,当然也可以是其他的版本;2、安装过程就如上面文章中讲到的一...

2012-08-05 11:16:04 141

原创 VI常用命令

[size=small]文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,以下稍做总结,以资共享。 [b]进入vi的命令[/b]vi filename :打开或新建文件,并将光标置于第一行首例如:vi test.log vi +n filename :打开文件,并将光标置于第n行首例如:v...

2012-07-26 15:59:36 88

原创 JDK环境配置

[size=medium]1、JDK的下载和安装可以参考博文JDK1.6官方下载[url]http://myboypaopao.iteye.com/blog/319153[/url],当然也可以下载其他版本的JDK。下载完成后在本地安装JDK,比如安装路径为C:\Program Files\Java\jdk1.6.0_02。2、配置环境变量JDK安装成功后需要配置JAVA_HOME、P...

2012-07-26 13:20:49 67

原创 本地Maven库的路径配置

[size=medium]一、配置Maven的变量增加环境变量MAVEN_HOME=D:\Program Files\apache-maven-2.2.1(这个是maven的安装路径)环境变量PATH=【已有变量】;%MAVEN_HOME%\bin;,主要是为了可以运行maven命令运行mvn -version可以看到关于maven的版本信息[img]http://dl.iteye...

2012-07-26 11:27:12 282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除