![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程并发编程
文章平均质量分 90
SherryWang0622
这个作者很懒,什么都没留下…
展开
-
Java多线程核心技术(六):单例模式与多线程
1、使用DCL双检查锁机制实现多线程环境中的延迟加载单例设计模式 class MyObject{ private volatile static MyObject myObject; private MyObject(){ } public static MyObject getInstance(){ try{ if(myObject == null){ //模拟原创 2017-02-28 16:46:36 · 315 阅读 · 0 评论 -
Java并发编程实战:线程池的应用
一、任务与执行策略间的隐形耦合 1、线程饥饿死锁 当任务都是同类、独立的时候,线程池才会有最好的工作表现。如果将耗时的短期的任务混合在一起,除非线程池很大,否则会有“塞车”的风险;如果提交的任务要依赖其他的任务,除非池是无限的,否则有产生死锁的风险。如下代码所示,对于一个单线程化的Executor,一个任务将另一个任务提交到相同的Executor中,并等待新提交的任务的结果,第二个任务滞留在工原创 2017-03-07 17:30:59 · 424 阅读 · 0 评论 -
Java并发编程实战:取消和关闭
一、任务取消 1、设置cancelled标志 在程序中声明volatile类型的cancelled标志,当任务调用者设置cancelled为true时,任务在运行过程中通过不断检查是否被取消可以得知任务被取消的消息,从而不再执行任务。如下代码所示: class PrimeGenerator implements Runnable{ private final List primes = n原创 2017-03-06 15:57:50 · 618 阅读 · 0 评论 -
Java并发编程实战:任务执行
一、无限制创建线程的缺点: (1)线程生命周期的开销:线程的创建与关闭是需要时间的,带来处理请求的延迟,并且需要在JVM和操作系统直接进行相应的处理活动。如果请求时频繁且轻量的,那么为每个请求创建一个新线程的做法会消耗大量的计算资源。 (2)资源消耗量:活动线程会消耗系统资源,尤其是内存。如果可运行的线程数多于可用的处理器数,线程将会空闲。大量空闲线程占用更多内存,给垃圾回收器带来压力,而且大原创 2017-03-04 15:12:57 · 532 阅读 · 0 评论 -
Java并发编程实战:并发基础构建模块
一、同步容器类 同步容器类包括Vector和Hashtable以及一些功能相似的类,这些同步的封装器类是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:将它们的状态封装起来(即设为私有,使得外部无法直接访问,只能通过公有方法来访问),并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。 同步容器类的问题: 同步容器类都是线程原创 2017-03-02 17:10:07 · 488 阅读 · 0 评论 -
Java多线程核心技术(二):对象及变量的并发访问访问
一、synchronized同步方法 1、方法内的变量为线程安全的 2、实例变量非线程安全:不同的线程访问同一个对象的同一个实例变量是非线程安全的,必须在访问此实例变量的方法上加synchronized关键字。 3、多个对象多个锁:如果多个线程分别访问同一个类的多个不同实例的相同名称的同步方法,会分别对每个实例产生一把锁,效果是以异步的方式运行的。 4、synchronized方法与锁对象原创 2017-02-25 11:56:47 · 596 阅读 · 0 评论 -
Java多线程核心技术(三):线程间通信
一、等待/通知机制 1、wait()/notify() 方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行处停止执行,直到接到通知或被中断为止。在调用wait()方法之前,线程必须获得该对象的对象级别锁,即只能在同步方法或者同步块中调用wait()方法。如果调用wait()时没有原创 2017-02-27 21:09:37 · 372 阅读 · 0 评论 -
Java多线程核心技术(四):Lock的使用
一、使用ReentrantLock类 1、ReentrantLock的简单使用 代码示例: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class MyService{ private Lock lock = new ReentrantLock(); p原创 2017-02-28 14:43:08 · 807 阅读 · 0 评论 -
Java多线程核心技术(五):定时器Timer
Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。 1、schedule(TimerTask task,Date time) 方法schedule(TimerTask task,Date time)的作用是在指定的日期执行一次某一任务。 如下代码是执行时间晚于当前时间的示例: public class TestClass{ private static Timer原创 2017-02-28 15:54:21 · 316 阅读 · 0 评论 -
Java多线程核心技术(一):基础知识总结
概念 进程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个程序集合上运行的过程,它是系统进行资源分配和调度的一个基本单位。 线程:线程是进程中独立运行的子任务。使用多线程技术后,可以在同一时间运行更多不同种类的任务。 使用多线程 第一种方式:继承Thread类,并实现run方法 第二种方式:实现Runnable接口 注意:1原创 2017-02-22 21:02:55 · 1843 阅读 · 0 评论