java多线程
sunByFeng
这个作者很懒,什么都没留下…
展开
-
java多线程技能(一)
1. 多线程定义 线程是在进程中独立运行的基本单位,多线程是指这个进程运行时产生的不止一个线程。 2. 进程定义 进程是操作系统的基础;是一次程序的执行;是系统进行资源分配和调度的基本单位。 3. 并发与并行 并行:多个cpu实例或者多台机器同时执行一端处理逻辑,是真正的同时。 并发:通过cpu调度算法,让用户看上去执行,实原创 2017-05-16 19:07:19 · 437 阅读 · 0 评论 -
java多线程3(线程间的通信)
1.线程通信方法 ①同步 线程B需要等待线程A执行完了methodA()方法之后,它才能执行methodB()方法。这样,线程A和线程B就实现了 通信。 这种方式,本质上就是“共享内存”式的通信。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。 ②while轮询的方式 在这种方式下,线程A不断地改变条件,线程ThreadB不停地通过while语句检测这个条件(l原创 2017-05-18 11:03:33 · 450 阅读 · 0 评论 -
java多线程五(ReentrantReadWriteLock深入分析)
ReentrantReadWriteLock与ReentrantLock说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。 ReentrantLock 实现了标准的互斥操作,也转载 2017-05-19 00:09:38 · 242 阅读 · 0 评论 -
多线程四(ReentrantLock与Condition)
一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可转载 2017-05-19 00:12:57 · 259 阅读 · 0 评论 -
java多线程二(synchronized与volatile)
1. synchronized同步方法 线程不安全存在于“实例变量”中,如果是方法内部变量则是线程安全的。 如果多个线程访问1个对象的实例变量,则存在“非线程安全”。synchronized产生的是对象锁,而不是把一段代码或者方法当锁,那个方法先执行synchronized方法就先获取对象锁,其他线程只能等待,前提是一个对象。 如果多个线程访问多个对象,则jvm产生多个锁,产生的效果可能是异步原创 2017-05-18 00:53:05 · 423 阅读 · 0 评论 -
Java内存模型与线程
1.硬件的效率 计算机的性能大部分浪费在IO操作上,cachc是内存和处理器间的缓冲,目的是为了读写操作尽量接近运算器的运行速度。 但是高速缓冲带来了新的问题“缓冲一致性”。 为了解决这一问题,读写操作需要根据协议来进行(MSI、MOSI),处理器可能会对输入代码进行乱序执行优化,处理器会将乱序执行的结果重组,保证结果一致性。java虚拟机的指令重排序。 2.java 内存模型 jav原创 2017-05-24 12:00:20 · 344 阅读 · 0 评论 -
面试问题(3)
1.final(变量、方法、类) finally finalize final:java中的关键字,修饰符。 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被声明为absrtact抽象类的和final的类。 2.如果将变量或者方法声明为final,可以保证它们在使用中不被改变.原创 2017-05-18 21:56:14 · 398 阅读 · 0 评论 -
单例模式与多线程
1.饿汉式(立即加载) 饿汉式是用空间换时间的方法,我看网上也说是没得多线程问题。但是看到《java多线程编程核心》说getInstance可能有非线程安全问题,不是很懂?public class Singleton { private static Singleton singleton=new Singleton(); private Singleton() { }原创 2017-05-20 21:20:37 · 238 阅读 · 0 评论 -
死锁概念
死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再 向前推进。 安全状态与不安全状态:安全状态指系统能按某种进程顺序来为每个进程分配其所需资源,直 至最大需求,使每个进程都可顺利完成。若系统不存在这样一个序列, 则称系统处于不安全状态。 产生死锁的原因:(1)竞争系统资源 (2)进程的推进顺序不当 产生死锁的必要条件: 互斥条件:进程要求对所分配的资源进行排原创 2017-05-20 19:50:02 · 309 阅读 · 0 评论 -
java多线程六(线程池)
线程池的作用: 在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。 常用线程池:ExecutorService 是主要的实现类,其中常用的有 Executors.newSi原创 2017-05-21 19:37:25 · 452 阅读 · 0 评论