
Java-多线程框架
Andy_Zheng.
这个作者很懒,什么都没留下…
展开
-
Java多线程中的死锁现象
某个线程T1锁住了资源A,需要再锁住资源B,才能继续往下执行,而另一个线程T2锁住了资源B,需要再锁住资源A任务才能完成,但是线程T2不释放资源B,T2就无法再往下执行,同理,线程T1不释放资源A的锁,线程T2也无法继续执行,这样程序就处于一种僵持状态。示例代码如下:package com.trs.thread; /** * 死锁示例 * @author xiayunan * @date...原创 2018-07-14 10:21:25 · 936 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的...转载 2018-07-13 21:57:20 · 170 阅读 · 0 评论 -
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。 乐观锁:顾名思义,就是很乐观,每次去拿数...转载 2018-07-25 11:45:19 · 139 阅读 · 0 评论 -
乐观锁和悲观锁的区别
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,...转载 2018-07-25 10:27:39 · 98 阅读 · 0 评论 -
Java线程面试题
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。2) 线程和进程有什么区别?线程是进程的子集,...转载 2018-07-13 17:57:38 · 127 阅读 · 0 评论 -
Java多线程学习之wait、notify/notifyAll 详解
1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/notifyAll() 方法。3、 由于 wait()、notify/notifyAll() 在synchro...转载 2018-07-13 14:21:31 · 146 阅读 · 0 评论 -
Java线程协作--生产者和消费者模式
生产者消费者模式是线程协作的经典应用,主要由具体产品类,容器类,生产者线程,消费者线程组成。具体表现形式为生产者线程生产产品往容器里放置,当容器满的时候,生产线程调用wait方法,使当前线程阻塞,而此时消费者线程在不断的消费容器里的产品,同时调用notifyf方法唤醒等待的生产者线程继续生产;同理,当消费者将容器内产品消费完之后,消费者线程会进入阻塞状态,而此时生产者线程在不断继续生产并唤...原创 2018-07-19 10:06:31 · 226 阅读 · 0 评论 -
synchronized锁住的是代码还是对象
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:class Sync { public synchronized void test() ...转载 2018-07-13 09:40:22 · 166 阅读 · 0 评论 -
Java多线程--join方法使用示例
Join方法在JDK中的解释为:等待当前线程调用结束 代码示例: package com.trs.thread; /** * join方法 * 允许当前线程在另一个线程上等待,进入阻塞状态,直到 * 另一个线程运行完毕,当前线程才会解除阻塞,继续执行。 * 通常用于协调两个线程同步工作使用 * @author xiayunan * @date 2018年7月18日 * *...原创 2018-07-18 10:47:46 · 262 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答
AVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(...转载 2018-07-17 15:46:16 · 133 阅读 · 0 评论