java并发
漫长学习路
为了完善自己的代码,我会尽自己最大的努力
展开
-
Java并发机制之Volatile关键字
在多线程并发编程中synchronized和volatile都是很重要的关键字,简单来说,synchronized保持和代码块中代码的同步下,valatile保证了共享变量的可见性。 volatile的定义与实现原理: Java语言允许线程访问共享变量,为了确保共享变量能被准备和一致的更新,线程应该确保通过排它锁单独获得这个变量。java语言提供了volatile,我们可以把它当成一个轻量级的原创 2016-04-03 22:27:54 · 1431 阅读 · 0 评论 -
Java同步并发容器类
同步容器类包括vector和Hashtable。此外还包括jdk1.2中添加的一些功能相似的类,这些同步封装器是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:将它们的状态封装起来,并对每个共有方法都进行同步,使得每次只有一个线程能访问容器的状态。同步容器类的问题 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作。原创 2017-04-18 21:16:11 · 2022 阅读 · 1 评论 -
Java线程优先级
操作系统基本采用时分的调度运行线程,操作系统会分出一个个时间片,线程会被分配到若干个时间片,当线程的时间片用完了就会发生线程调度,并且等待着下次调度,线程被分配到的时间片多少也就决定了线程使用处理器资源的多少,而线程优先级就是决定线程能够分配多少处理器资源的线程属性。在Java多线程中,通过一个整形变量priority来控制优先级,优先级的范围从1-10.默认是5,优先级越高越好。 public原创 2017-04-09 16:32:38 · 853 阅读 · 1 评论 -
java内存模型(一)
什么是内存模型?为什么要使用内存模型 内存模型需要解决的问题是,在两个线程里读取同一个值得时候,如何才能使线程读取到最新的值;JAVA内存模型是通过各种操作来定义的,包括对变量的读/写操作。监视器的加锁和释放操作,以及线程的启动和合并操作。JMM为程序中所有的操作定义了一个偏序关系(Happens-Before)。要想保证执行B操作的线程看到A执行后的结果,那么两者之间必须满足这个关系。如果缺少原创 2016-07-24 16:39:24 · 667 阅读 · 0 评论 -
JAVA的内存管理
网上总是有很多五花八门的面试题,可是回答的都不是很深入,因为自己将要面临着找工作,所以专门来整理一下自己的思路,和面试题。首先第一个问题,也是问的比较普遍的就是你了解java内存吗?java内存分为哪几种?解释内存中的栈(stack)、堆(heap)和静态存储区的用法。 我们先来看一看深入理解Java虚拟机的第2章内容 概述: 对于从事C和C++程序开发的开发人员来说,在内存翻译 2015-05-09 10:08:29 · 1031 阅读 · 1 评论 -
(趣文)我是一个线程
来自:码农翻身(微信号:coderising) 作者:IBM 刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴。 我身边的同伴0×6900 待的时间比较长, 他带着沧桑的口气对我说: “我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。” 我转载 2016-04-21 10:31:48 · 2372 阅读 · 0 评论 -
Java synchronized的实现原理与应用
在多线程中synchronized应该是我们运用的最多的,很多人会称呼它为重量级锁。java中的每一个对象都可以作为锁。具体表现为以下三种形式。 对于普通同步方法,锁是当前实例对象。 //图书 class Books { private int id;// 图书ID private String name; // 图书名称 private int number; // 图书数量 //原创 2016-04-04 21:22:36 · 3009 阅读 · 0 评论 -
线程的生命周期及状态的管理
线程的生命周期: 线程是一个动态执行的过程,它也有一个从产生到死亡的过程。 (1)生命周期的五种状态 新建(new Thread) 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。 例如:Thread t1=new Thread(); 就绪(runnable) 线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资原创 2015-06-02 16:20:02 · 3209 阅读 · 0 评论 -
并发编程概念篇
什么是并发编程啦,这貌似是一个很深奥的话题,其实并发离我们的生活很近,我们经常会并发的去做一件事情。我觉得要学好一件事情首先是要学会它的思想Learn its ideas; 了解并发之前,先分清楚进程和线程。进程就是指我们的程序所运行的一个个任务,原创 2015-05-23 08:41:59 · 1178 阅读 · 0 评论 -
Java 中的锁
lock接口 锁时用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,java程序时靠synchronized关键字实现锁的功能。但是Lock接口出现之后,我们用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取锁和释放锁。虽然它缺少了原创 2017-05-20 18:20:39 · 621 阅读 · 1 评论