
java并发编程
文章平均质量分 59
yu_liantao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java_Object_wait()、notify()、notifyAll()
http://blog.youkuaiyun.com/zimo2013/article/details/401813491.概述在同一进程下可以创建多个线程来共享同一块数据空间,Java语言提供了专门机制,有效避免了同一个数据对象被多个线程同时访问冲突的问题。其中wait与notify是java同步机制中重要的组成部分,需要结合与synchronized关键字使用,可以建立很多优秀转载 2017-10-21 18:05:24 · 146 阅读 · 0 评论 -
BlockingQueue的使用
BlockingQueue的使用本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操转载 2017-10-22 16:59:57 · 170 阅读 · 0 评论 -
使用Lock来实现生产者和消费者问题
现在用Lock来实现它 1 package com.thread; 2 3 import java.util.LinkedList; 4 import java.util.concurrent.locks.Condition; 5 import java.util.concurrent.locks.Lock; 6 import java.util.concu转载 2017-10-22 17:09:32 · 224 阅读 · 0 评论 -
【Java并发之】BlockingQueue
一、什么是BlockingQueueBlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种:1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个转载 2017-10-23 22:55:19 · 165 阅读 · 0 评论 -
java多线程并发编程总结
1.继承Thread后通过star方法启动。thread.getName()获取当前线程名称tread.currentThread()获取当前线程。2.实现runnable接口,然后实现的类作为thread的构造参数,使用star启动。3.带返回值的线程创建:实现callable接口,返回线程执行后的返回值future接口(futureTask是future的实现类原创 2017-10-24 14:56:55 · 440 阅读 · 0 评论 -
Java并发编程-如何终止线程
我们知道使用stop()、suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:1.使用interrupt()中断方法。2.使用volatile boolean变量进行控制。在使用interrupt方法之前,有必要介绍一下中断以及与interrupt相关的方法。中断可以理解为线程的一个标志位属性,转载 2017-10-24 17:12:48 · 185 阅读 · 0 评论 -
Java并发编程-同步辅助类之Phaser
在前面已经学习过 Java并发编程-同步辅助类之CountDownLatch Java并发编程-同步辅助类之CyclicBarrier 这篇文章介绍另一个辅助类Phaser,它是Jdk 1.7才添加的新的功能,它可以实现和CountDownLatch/CyclicBarrier类似的功能,但Phaser的功能更多,更加的灵活,它支持任务在多个点都进行同步,支持动态调整注册任务的数量。当转载 2017-10-24 17:15:28 · 138 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁的使用
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人转载 2017-10-21 17:20:59 · 148 阅读 · 0 评论 -
java内功系列三(多线程)
1.并发和并行区别:并行指某时刻多个同时执行,并发指某时刻只能有一个执行但是由于cpu的轮换执行宏观上感觉是同时执行。2.线程拥有自己的堆栈、程序计数器、局部变量。但是多个线程只能共享父进程的全部资源。3.线程启动几种方式。一:继承Thread后重写run方法后就可以实例化对象用star()启动一个线程执行(多个thread之间不能共享)。二:实现Runnable(多个thread启动时传...原创 2018-08-28 17:25:20 · 284 阅读 · 0 评论 -
Quartz任务调度快速入门
转:http://sishuok.com/forum/posts/list/405.html 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述: ●Job:是一个接口,只有一个方法void execute(JobExec...转载 2018-08-29 11:58:16 · 142 阅读 · 0 评论 -
深入解读Quartz的原理
转载:http://blog.51cto.com/lavasoft/181907Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便。 一、核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。 1、Job表示一个工作,要执行的具体内容。此接口中只有一个方法void execute(JobExecution...转载 2018-08-29 13:50:25 · 236 阅读 · 0 评论 -
Java并发专题 带返回结果的批量任务运行 CompletionService ExecutorService.invokeAll
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/27250059普通情况下,我们使用Runnable作为主要的任务表示形式,可是Runnable是一种有非常大局限的抽象,run方法中仅仅能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,还有一方面须要控制同步,效率非常大的限制),总之不能返回运行的结果;比方同一时候...转载 2018-08-30 11:07:45 · 265 阅读 · 0 评论 -
Callable和Future
http://blog.youkuaiyun.com/ghsau/article/details/7451464 接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更转载 2017-10-22 11:54:28 · 144 阅读 · 0 评论 -
Java并发编程之显示锁ReentrantLock和ReadWriteLock读写锁
这篇文章主要介绍了Java并发编程之显示锁ReentrantLock和ReadWriteLock读写锁,本文讲解了ReentrantLock概况、Lock接口、Lock使用、轮询锁的和定时锁、公平性、可中断获锁获取操作等内容,需要的朋友可以参考下在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁Re转载 2017-10-22 11:49:56 · 194 阅读 · 0 评论 -
java线程之间的通信(等待/通知机制)
线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照代码一步步的执行直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有太大的价值,但如果多个线程能够相互配合完成工作,这将会带来巨大的价值。而java多线程的等待和通知机制就是用来完成线程之间的通信。一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行相应的操作,整个过程开始于一个线程,而最终执行又是另一个转载 2017-10-22 11:26:08 · 182 阅读 · 0 评论 -
Java_并发线程_Future、FutureTask、Callable
1.Future[java] view plain copypublic interface Future //Future 表示异步计算的结果 [java] view plain copyExecutorService threadPool = Executors.newSingleThre转载 2017-10-21 18:14:00 · 170 阅读 · 0 评论 -
java并发编程--Executor框架
http://www.cnblogs.com/MOBIN/p/5436482.html摘要: Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现转载 2017-10-21 18:27:31 · 205 阅读 · 0 评论 -
Java并发编程--Volatile详解
摘要 Volatile是Java提供的一种弱同步机制,当一个变量被声明成volatile类型后编译器不会将该变量的操作与其他内存操作进行重排序。在某些场景下使用volatile代替锁可以减少代码量和使代码更易阅读。 Volatile特性 1.可见性:当一条线程对volatile变量进行了修改操作时,其他线程能立即知道修改的值,即当读取一个volatile变转载 2017-10-21 19:11:57 · 171 阅读 · 0 评论 -
java synchronized修饰方法和修饰方法块
感觉这篇文章写的不错,转载其他作者的。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个转载 2017-10-21 21:22:54 · 386 阅读 · 0 评论 -
java内存模型
看了一篇写java内存很好的文章,在此转载一下。1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一转载 2017-10-21 21:49:22 · 211 阅读 · 0 评论 -
多线程的简单认识
最近看了一些资料再结合自己的积累,说一点多线程的简单认识,能力有限,如有纰漏,欢迎指正线程:相比于进程来说,可以称为轻量级的进程,是程序能执行的最小单元。1个进程可以有多个线程,1个服务或者程序也可以有多个线程。线程有5种状态,创建,就绪,运行,堵塞,停止。线程的创建分为2种:第一种,无返回的线程,继承Thread,实现Runnable接口,其中Thread底层还是实现Runnab转载 2017-10-21 22:04:40 · 161 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
http://www.cnblogs.com/dolphin0520/p/3920397.html 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.C转载 2017-10-21 22:45:54 · 132 阅读 · 0 评论 -
java并发编程--Runnable Callable及Future
1.RunnableRunnable是个接口,使用很简单:1. 实现该接口并重写run方法2. 利用该类的对象创建线程3. 线程启动时就会自动调用该对象的run方法通常在开发中结合ExecutorService使用,将任务的提交与任务的执行解耦开,同时也能更好地利用Executor提供的各种特性ExecutorService executor转载 2017-10-21 23:34:57 · 155 阅读 · 0 评论 -
理解java线程的中断(interrupt)
一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等。 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了那么不能直接把一个线程搞挂掉, 但有时候又有必要让一个线程死掉, 或者让它结束某种等待的状态 该怎么办呢?一个比较优雅而安全的做法是:使用等待/通知转载 2017-10-22 10:37:05 · 159 阅读 · 0 评论 -
volatile关键字解析(jdk1.5之后)
学习过并发编程的同学应该对volatile关键字并不陌生。它也是用来保证多线程读写数据时保证数据的一致性,但它不如synchronized强大。synchronized是在执行代码块或是方法体时中隐式的加锁而禁止其他线程来访问。而volatile仅仅是对某个变量的修改及时的可见于其他的线程。既然volatile的作用是对某个变量的修改及时的可见于其他的线程,那么对于非volatile修饰的转载 2017-10-22 10:52:39 · 415 阅读 · 0 评论 -
Java中的锁-Lock
提到java中的锁,相信大家都知道它是用来控制多个线程访问共享资源的方式(即锁能防止多个线程同时访问空享资源而出现线程安全问题)。在实践过程中使用最多的也最常见的锁就是 synchronized 在jdk1.5之前也仅仅有这一种锁而已。在jdk1.5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,Lock接口提供了与synchronized关键字类似的同步功能,但需要在使用时手动转载 2017-10-22 11:20:37 · 450 阅读 · 0 评论 -
java-堆、栈、方法区、直接内存、堆和栈区别
https://blog.youkuaiyun.com/kangu4/article/details/79797961https://www.cnblogs.com/hqji/p/6582365.htmlhttps://blog.youkuaiyun.com/qian520ao/article/details/789528951 堆区: 1.1 存储的全部是对象,每个对象都包含一个与之对应的class的信息...转载 2018-08-30 13:56:32 · 1053 阅读 · 0 评论