
并发编程专题
文章平均质量分 88
并发编程特指在单台计算机的环境下可以使计算机指令同时发生并相互协作的计算机语言级别的并发计算技术。并发其主要思想是使多个任务可以在同一时间执行以便能够更快地得到结果。并发编程的思想来自于多任务操作系统。
源码小哥
这个作者很懒,什么都没留下…
展开
-
并发编程专题(四)-线程的控制
1.Join方法Thread提供了让一个线程等待另一个线程完成的方法join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。当所有的小问题都得到处理后,再调用主线程来进一步操作。例如当在主线程当中执行到t1.join(...原创 2019-06-01 23:55:04 · 218 阅读 · 2 评论 -
并发编程专题(二)-线程的创建方式
1. 通过继承Thread类来创建并启动多线程的方式2. 通过实现Runnable接口来创建并启动线程的方式3. 通过实现Callable接口来创建并启动线程的方式4. 总结Java中创建线程的方式,比较各自优势和区别原创 2019-06-01 17:55:16 · 198 阅读 · 0 评论 -
并发编程专题(三)-线程的状态
6.Thread类我们已经可以完成最基本的线程开启,那么在我们完成操作过程中用到了 java.lang.Thread 类,API中该类中定义了有关线程的一些方法,具体如下:构造方法:public Thread() :分配一个新的线程对象。public Thread(String name) :分配一个指定名字的新的线程对象。public Thread(Runnable target)...原创 2019-05-30 18:02:44 · 274 阅读 · 0 评论 -
并发编程专题(一)-并发与多线程
1. 并发与并行的区别,何为并发编程,并发编程的优势在哪2. 多线程、多任务、多进程机制概述3. 多线程、多任务、多进程机制与编程思想的关系原创 2019-05-30 17:48:48 · 522 阅读 · 0 评论 -
并发编程进阶03-java.util.ConcurrentModificationException异常-多线程情况
同步类容器都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合操作如:迭代(反复访问元素,遍历容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这个复合操作在多线程并发地修改容器的时候,可能表现出意外的行为,最为经典的便是ConcurrentModifationException,原因是当容器迭代的过程中,被并发地修改了容器的内容,这是由于在早起迭代...原创 2019-03-10 16:27:47 · 634 阅读 · 0 评论 -
并发编程进阶02-java.util.ConcurrentModificationException异常-单线程情况
同步类容器都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合操作如:迭代(反复访问元素,遍历容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这个复合操作在多线程并发地修改容器的时候,可能表现出意外的行为,最为经典的便是ConcurrentModifationException,原因是当容器迭代的过程中,被并发地修改了容器的内容,这是由于在早起迭代...原创 2019-03-10 15:53:15 · 328 阅读 · 0 评论 -
并发编程进阶01-同步类容器
同步类容器都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合操作如:迭代(反复访问元素,遍历容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这个复合操作在多线程并发地修改容器的时候,可能表现出意外的行为,最为经典的便是ConcurrentModifationException,原因是当容器迭代的过程中,被并发地修改了容器的内容,这是由于在早起迭代...原创 2019-03-10 13:30:20 · 256 阅读 · 0 评论 -
并发编程基础08-线程安全单例
单例模式:最为常见的就是饿汉式和懒汉式。一个是直接实例化对象,一个是在调用的时候实例化对象。在多线程的模式中,往往要考虑到性能和线程安全的问题,我们一般选择两种比较经典的单例模式,在性能提高的同事,又能保证线程的安全。静态内部类方式:public class Singletion { private static class InnerSingletion { private s...原创 2019-03-10 11:18:24 · 224 阅读 · 0 评论 -
并发编程基础08-ThreadLocal线程局部变量
ThreadLocal概念:线程局部变量。是一种多线程间并发访问某一个变量的解决方案。与Synchronized等加锁的方式有所不同,ThreadLocal完全不提供锁。而是使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程的安全。 从性能上来说,ThreadLocal不具有绝对的优势,在并发不是很高的情况下,加锁的性能会更好,但是作为一套与锁完全无关的线程安全解决方案,在高...原创 2019-03-10 11:11:54 · 218 阅读 · 0 评论 -
并发编程基础07-使用wait和notify模拟LinkedBlockingQueue
BlockingQueue:顾名思义,首先它是一个队列,然后支持阻塞机制。阻塞的放入和得到的数据。如果我们要实现LinkedBlockingQueue,那么最起码要实现两个最为基础的方法:put和tack。put:把anObject加入到BlockingQueue中,如果队列中没有空间,则调用此方法的线程被阻塞,直到BlockingQueue中有可用的空间再继续加入。tabk:获取Block...原创 2019-03-10 10:56:33 · 424 阅读 · 0 评论 -
并发编程基础06-单例模式
1.饿汉式单例示例:/** * 单例模式1:饿汉式 * @author bruceliu * @create 2019-02-28 11:27 */public class MySingeleton { private static MySingeleton instance=new MySingeleton(); public MySingeleton(){...转载 2019-02-28 23:26:19 · 269 阅读 · 0 评论 -
并发编程基础04-volatile关键字
1.volatile 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用.volatile关键字的主要作用是使变量在多个线程间可见。示例1:/** * @author bruceliu * @create 2019-02-27 20:25 */public c...原创 2019-02-27 23:35:45 · 284 阅读 · 0 评论 -
并发编程基础05-线程通信
1.线程之间的通信 线程通信的概念:线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能形成一个整体,那么线程之间的通信就成为整体的比用方式之一。系统中的线程存在通信,那么系统间的交互性就会更大,在提高CPU利用率的同时还会使得开发人员更好的把控线程任务的调用、更加便捷的对线程的处理过程进行监督。 使用wait/notify方法实现线程间的通信(注意这两个方法都是object类...原创 2019-02-27 23:20:28 · 222 阅读 · 0 评论 -
并发编程基础03-Synchronized关键字
1.Synchronized锁重入关键字synchronized拥有锁重入额功能,也就是说在使用synchronized关键字的时候,当一个线程得到一个锁的对象后,再次请求此对象时是课再次得到该对象的锁。如果说在执行锁内容的过程中出现了异常的话,那么锁将会被自动释放。示例1/** * synchronized的重入 * * @author bruceliu * @create 201...原创 2019-02-26 23:43:57 · 203 阅读 · 0 评论 -
并发编程基础02-同步和异步
1.对象锁的同步和异步同步:synchronized同步的概念就是共享,我们只需要牢牢把握“共享”这个两个字就可以,如果不是共享的资源,就没有必要进行同步的操作。异步:asynchronized异步的概念就是独立,相互之间不受到相互的影响和制约。就好像我们在学习http的时候,在页面上发起一个Ajax请求,我们还可以继续浏览或者操作页面的内容,二者之间没有任何关系。同步的目的就是为了线程...原创 2019-02-26 20:38:56 · 353 阅读 · 0 评论 -
并发编程基础01-线程安全
1.线程安全 线程安全的概念:当多个线程访问某一个类(对象或者方法)的时候,这个类始终都能表现出正确的行为,那么这个类(对象或者方法)及时线程安全的。 synchronized:可以在任意对象及方法上加锁,而加锁的这段代码成为“互斥区”或者“临界区”。示例:/** * @author bruceliu * @create 2019-02-25 21:02 * 线程安全概念:当...原创 2019-02-25 21:32:49 · 264 阅读 · 0 评论