多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。先来看第一段代...
分类:
编程语言 时间:
2015-04-17 21:49:03
阅读次数:
189
深入理解
java执行器相关的类有:Executor ,Executors,ExecutorService。
Executor分析
Executor是一个接口,是用来执行 Runnable 任务的;它只定义一个方法- execute(Runnable command);执行 Ruannable 类型的任务。通过 Executor 管理 Thread 对象,可以简化编程。Executor在客户单和任务执行之间提供了一个中介层,通过中介来执行任务。Executor执行任务而无须管理任务的生命周期。因此,Exec...
分类:
编程语言 时间:
2015-04-17 13:51:39
阅读次数:
164
1 import javax.swing.plaf.SliderUI; 2 3 /* 4 * 生产者Producter 5 * 仓库Godown 6 * 消费者 Consumer 7 * 生产者和消费者通过仓库而建立起联系,仓库的当前数量低于最大库存量时,生产者线...
分类:
编程语言 时间:
2015-04-17 13:24:38
阅读次数:
140
初次接触死锁的概念是大学的一门课程《操作系统原理》中描述的“哲学家进餐”问题。操作系统中,由于各个进程共享系统资源而可能出现死锁问题。同样java多线程环境下,也存在资源共享导致的死锁问题。当一组java线程发生死锁时,程序有可能就此阻塞,而无法正常结束。Java应用程序中,我们使用加锁机制来确保线程的安全,但是如果过度地使用加锁,可能导致锁顺序死锁问题。
整理《java并发编程实...
分类:
编程语言 时间:
2015-04-17 11:33:25
阅读次数:
172
??
1、并发和并行的区别
可由上图形象指出两者的区别:
1)定义:
并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
来个比喻:并发和并行的区别就是一个人同时吃三个馒...
分类:
编程语言 时间:
2015-04-17 11:26:29
阅读次数:
171
理解线程这段时间在看《Java并发编程实战》这本书,使自己对Java多线程的理解又加深一些,感觉自己可以总结一下了,本文就讲讲与线程有关的内容吧。我们要使用线程,首先需要理解线程,前短时间我在聊聊操作系统这篇文章中提到了一点关于线程的东西,有兴趣的同学可以读一下。有一点需要理解的就是,我们虽然常说“Java多线程”,但实际上线程这东西是由操作系统提供支持的,它并不是由Java本身提供支持的,所以实际...
分类:
编程语言 时间:
2015-04-16 21:56:17
阅读次数:
147
1、多线程概述当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。主要以下几个优点:线程之间很容易实现共享内存创建线程代价较小Java语言内置多线程功能支持2、线程的创建和启动所有的线程对象都是Thread类或其子类的对象,每一个线程完成一定的任务。Java定义了两种创建线程...
分类:
编程语言 时间:
2015-04-16 12:01:54
阅读次数:
176
web应用中java多线程并发处理业务时,容易抛出NullPointerException。原因:线程中的Spring Bean没有被注入。web容器在启动时,没有提前将线程中的bean注入,在线程启动之前,web容器是无法感知的。解决方案:方法一、在声明成员变量的时候,将其定义为static的。(...
分类:
编程语言 时间:
2015-04-15 23:01:34
阅读次数:
191
1、多线程概述
当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。主要以下几个优点:
线程之间很容易实现共享内存创建线程代价较小Java语言内置多线程功能支持
2、线程的创建和启动
所有的线程对象都是Thread类或其子类的对象,每一个线程完成一定的任务。
Java定义了两种创建线程的方法:
方法一:继承Thread类创建线...
分类:
编程语言 时间:
2015-04-15 19:44:52
阅读次数:
152
举个公司项目开发遇到的一个简单例子,用户上传压缩文件到服务器后,要对该压缩包进行两个操作,一是将该压缩包复制到指定目录,一是将该压缩包解压到另一指定目录,最终响应用户提示文件上传成功。如果压缩包很大的话,上传后进行的复制和解压功能也会占用很长时间,用户就会等待很长的时间。其实复制和解压的功能和用户操作没有直接关系,完全可以独立出来,其解决的思路如下:
当用户上传压缩文件完毕之后,我们立即...
分类:
编程语言 时间:
2015-04-15 19:38:54
阅读次数:
147