![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
文章平均质量分 80
0TST0
whu-cs硕士在读
展开
-
Java多线程-1 创建线程
Java多线程-1 Two basic ways to start a thread.原创 2017-06-03 14:39:14 · 540 阅读 · 0 评论 -
Multi-Programming-17 Semaphore & CountDownLatch信号量和计数栓之间的关系
1. 信号量与计数栓Semaphore & CountdownLatch关于该问题的Q&A主要来自此处,可以自行查看。 信号量:Semaphore is used to control the number of concurrent threads that are using a resource. That resource can be something like a file, or原创 2017-08-27 18:40:11 · 460 阅读 · 0 评论 -
Multi-Programming-16 线程死锁实现方式
1. 简单实现:使用synchronized方法 Mutual exclusion:互斥访问 Hold and wait:拥有等待 Non-emptive:不可剥夺 Circular waiting:循环等待 package com.fqyuan._11deadlock;public class DeadLockOri { private static Objec原创 2017-08-27 15:16:58 · 293 阅读 · 0 评论 -
Multi-Programming-15 线程顺序执行
1. 问题 Q:假设有三个线程,假设为t1, t2, t3, 如何保证线程的顺序执行t1->t2->t3? A:首先,java语言多线程机制并没有执行顺序的属性;其次,设置线程的优先级并不能确保线程的准确执行顺序。所以,这里需要采用其他方式保证执行了。 本文提供了三种解决方式: 1). ReentrantLock: 重入锁方案。 2). Condition: 类似于wai原创 2017-08-27 12:19:34 · 375 阅读 · 0 评论 -
Multi-Programming-11 DeadLock 死锁
1. 死锁是什么?这里有详尽介绍。对于并发和操作系统中,都有死锁的说法。并发:死锁是这样一种状态,一组操作的每个成员都在等待其他成员释放锁。操作系统:死锁在进程或线程因所请求的资源被其他进程占有而进入等待状态,然后依次等待被其他线程所占有的其他资源。如果一个进程因为另外的等待进程占有资源而永远地无法改变它的状态,我们把这种系统状态叫做死锁。2. 死锁产生的条件原创 2017-06-11 18:30:55 · 256 阅读 · 0 评论 -
Java多线程-3 线程同步之synchronized
synchronized 关键字原创 2017-06-03 20:34:25 · 292 阅读 · 0 评论 -
Multi-Programming-14 线程中断
1. void java.lang.Thread.interrupt()线程中断究竟做了什么?这里有关于该问题的详细回答。调用Thread.interrupt()方法后,目标线程的中断状态被更新了。在目标线程中运行的代码可能会记下中断状态并在之后做好善后处理。一些方法比如Object.wait()将会立即响应此中断状态并立即抛出对应的异常(通常是InterruptedException原创 2017-06-12 15:49:15 · 227 阅读 · 0 评论 -
Multi-Programming-13 Callable和Runnable
1.Callable和Runnable接口There are two ways of creating threads – one by extending the Thread class and other by creating a thread with a Runnable. However, one feature lacking in Runnable is that we原创 2017-06-12 09:41:27 · 285 阅读 · 0 评论 -
Multi-Programming-10 Re-entrant Locks
1.What is the difference between synchronized and re-entrant lock?这里是关于该问题的讨论。中文简单解释一下:问题:'synchronized'和 're-entrant lock'有什么不同,或者换种说法--这两种方式分别在哪些情形下适用?解答:官方关于're-entrant lock'的解释--重入原创 2017-06-11 15:07:21 · 321 阅读 · 0 评论 -
Multi-Programming-9 非线程安全类实现生产者和消费者
生产者消费者问题原创 2017-06-07 22:16:23 · 268 阅读 · 0 评论 -
Multi-Programming-8 线程安全类实现生产者和消费者
线程安全类 ArrayBlockingQueuejava.util.concurrent.BlockingQueue原创 2017-06-06 22:51:08 · 277 阅读 · 0 评论 -
Multi-Programming-7 wait() and notify()
1. 什么是wait() & notify()? What is wait() and notify()?这里有关于wait() & notify()以及 ReentrantLock, await(), signal()的问答。 wait()和notify(): 这是Java语言提供的一种机制,使得一个线程在某种条件满足之前处于阻塞状态,直到条件满足后才能继续运行。 wait:使得当前线程释放对原创 2017-06-05 22:07:54 · 207 阅读 · 0 评论 -
Multi-Programming-6 CountDown latches
CountDownLatch原创 2017-06-04 17:32:26 · 291 阅读 · 0 评论 -
Java多线程-2 基本线程间通信 && volatile keyword
这里是通过在主线程中终止一个用户线程的操作的例子。但在本内容之前需要首先了解Java内存模型。1. java内存模型:指定了虚拟机和Java内存RAM是如何运作的这里是关于java内存模型的详细资料,但全部是英文的,如果不想细看,可以看我的简略理解. 1). 逻辑角度的Java内存模型。 java内存模型把内存分为线程栈和堆。 栈:栈中存有该线程方法调用信息;被该线程调用方法原创 2017-06-03 18:46:49 · 297 阅读 · 0 评论 -
Multi-Programming-5 Thread Pools
线程池原创 2017-06-04 15:55:10 · 382 阅读 · 0 评论 -
哲学家就餐问题 Java语言实现
1. 哲学家就餐问题描述本文部分内容来源于此,欲了解详细内容,自行点击查看。 为了不失一般性,我们假设有n个哲学家,围着餐桌思考宇宙、人生问题,每个哲学家面前有一个叉子与之对应,即:共有n个叉子;当哲学家思考一段时间后,他会拿起身边的2个叉子才能进食。进食完毕后,该哲学家放下叉子,继续思考人生、宇宙,如此往复,周而复始。2. 解决方案 在解决该类问题时,属于竞争资源情形,假设所有哲学家均同原创 2017-07-30 13:09:01 · 1938 阅读 · 1 评论 -
Java多线程-4 Lock Objects to Speed up multi-thread code
方法同步vs代码块同步原创 2017-06-04 15:07:36 · 396 阅读 · 0 评论 -
Multi-Programming-12 Semaphore信号量机制
1.Semaphore 和 ReentrantLock 的condition有什么不同(acquire()/release()、await()/signal())?这里有关于此问题的详尽问答,下面贴下截图。大意:java.util.concurrent.Semaphore是相对高级的同步机制,一般用来限制并发访问同一资源的线程数量,通过每个线程访问资源之前调用acq原创 2017-06-11 19:08:34 · 298 阅读 · 0 评论