多线程并发编程
文章平均质量分 90
East_MrChiu
这个作者很懒,什么都没留下…
展开
-
【并发编程】并发编程的模型
并发编程的模型并发模型分为三种:并行工作者模型委派者(Delegator)将作业分配给不同的工作者(Worker)。每个工作者完成整个任务。工作者们并行运作在不同的线程上。举个例子,果园收获苹果,每一棵树的采摘流程只由一个工人负责,即摘下,收装打包,上货等等,然后所有工人一起开始动手。这就是并行工作者模式。优点:简单容易理解,只需要添加更多的线程来提高系统的并行度。翻译 2017-05-11 11:13:34 · 617 阅读 · 0 评论 -
中断阻塞睡眠interrupt的使用
关于interrupt原创 2014-09-21 10:41:25 · 641 阅读 · 0 评论 -
Java线程优先级
package Multithreading01;/* * 线程优先级 * .setPriority() 优先级 */public class PriorityDemo { public static void main(String[] args) { //优先级最高的线程 Thread max = new Thread(new Runnable(){ @Overrid原创 2014-09-21 11:34:27 · 539 阅读 · 0 评论 -
sleep(),join(),yield()的区别以及wait()和notify()、notifyAll()以及run和start()
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行原创 2014-09-21 11:45:19 · 674 阅读 · 0 评论 -
【并发编程】线程的创建,计时器,线程的同步锁
今天又重新把Java中的多线程和并发运行巩固了一次,关于这一点,我稍微总结一点基础的东西。线程的创建首先线程的创建有两种方式:package Multithreading;public class NewThreadDemo { public static void main(String[] args) { /** * 第一种方法 */ // 在Threa原创 2014-09-07 18:42:52 · 649 阅读 · 0 评论 -
【并发编程】线程范围内的数据共享,ThreadLocal,多线程间的数据共享
这几天生病了,所以学的比较少,只学习了关于线程中的线程范围数据共享,ThreadLocal以及多线程数据共享。在这里记下我的理解和代码,其实理解都写在代码注释里了,个人觉得这样更加适合以后复习。(上一篇我讲的是关于线程的创建,计时器,同步锁,线程间的通信。)第一个,关于线程范围内的数据共享。数据共享,一般是多个事件在串在同一个线程里调用同一个数据。下面一个小例子就可以说原创 2014-09-09 16:51:35 · 825 阅读 · 0 评论 -
【并发编程】死锁
死锁是两个或更多线程阻塞着等待其它处于处于死锁状态的线程所持有的锁。简单说,就是线程之间互相得不到说需要的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如:如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,他们将永远的阻塞下去。这就是死锁。public class Tr翻译 2017-05-22 22:50:58 · 448 阅读 · 0 评论 -
【并发编程】从Java内存模型看并发数据共享与线程安全
竞态条件与临界区当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。在临界区中使用适当的同步就可以避免竞态条件。线程安全允许被多个线程同时执行的代码称为线程安全的代码。线程安全的代码不包含竞态条件。当多个线程同时更新共享资源时会引发竞态条件。因此,了解Java线程执行时共享了什么资源很重要。局部变量局部变量存翻译 2017-05-15 17:25:05 · 503 阅读 · 0 评论 -
【并发编程】Java同步块synchronized
Java同步块分为四种:1.实例方法2.静态方法3.实例方法中的同步块4.静态方法中的同步块实例方法同步public synchronized void add(int value){ this.count += value;}Java实例方法同步是同步在拥有该方法的对象上。这样,每个实例其方法同步都是同步在不同对象上的,即该方法所属的实例。只有一个线程能够在翻译 2017-05-15 23:00:28 · 397 阅读 · 0 评论 -
Java的前台线程与守护线程(后台线程)
守护线程(后台线程)当一个进程中的所有前台线程运行完毕后,所有后台线程均要强制结束.进程的结束:当一个进程中的所有线程结束后,该进程结束.原创 2014-09-21 10:10:59 · 882 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(五)——并发 Collection
并发 Collection:除队列外,此包还提供了设计用于多线程上下文中的 Collection 实现:ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、CopyOnWriteArrayList 和CopyOnWriteArraySet。当期望许多线程访问一个给定 collection 时,ConcurrentHas原创 2014-09-14 15:54:35 · 701 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(三)
今天学了线程池,原创 2014-09-11 13:33:53 · 554 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(四)——之Condition
关于Java的多线程和并发运行学习了几天原创 2014-09-13 18:45:01 · 667 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(四)——之Semaphore
Semaphore实现信号灯:Semaphore可以维护当前访问自身的线程个数,并提升了同步机制。 * 使用Semaphore可以控制同时访问资源的线程个数,例如:实现一个文件允许的并发访问数。 * 单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了“锁”, * 再由另外一个线程释放“锁”,这可以应用于死锁恢复的一些场合。原创 2014-09-13 19:34:53 · 534 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(四)——之CyclicBarrier
CyclicBarrier: 表示大家彼此等待,集合好后在开始出发,分散活动后又在指定地点集合碰面,这就好比 整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时 出发到公园游玩,在指定地点集合后再同时开始就餐……原创 2014-09-13 21:04:15 · 506 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(四)——之CountDownLatch
CountDownLatch:原创 2014-09-14 12:58:14 · 535 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(四)——之Exchanger
可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。原创 2014-09-14 13:53:11 · 525 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(五)——阻塞队列
* 阻塞队列: * (查询BlockingQueue的API文档) * 阻塞队列与Semaphore有些相似,但也不同,阻塞队列是一方存放数据,一方释放数据, * Semaphore通常则是由同一方设置和释放信号量。原创 2014-09-14 14:54:20 · 551 阅读 · 0 评论 -
关于Java多线程和并发运行的学习(五)——同步集合类
这是关于多线程与并发运行的最后一篇学习记录了原创 2014-09-14 15:42:27 · 652 阅读 · 0 评论 -
【并发编程】线程通信与TheadLocal类
线程通信的目标是使线程之间能够互相发送信号。或者,线程通信使线程能够等待其它线程。通过共享对象通信线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程A在一个同步块里设置boolean型成员变量hasDataToProcess为true,线程B也在同步块里读取hasDataToProcess。这个简单的例子使用了一个持有信号的对象,并提供了set和check方法。publi翻译 2017-05-17 11:35:37 · 491 阅读 · 0 评论