随笔分类 -  Java_多线程并发编程

摘要:1. wait() sleep() yield() join()用法与区别 本文提到的当前线程是指:当前时刻,获得CPU资源正在执行的线程。 1.1 wait()方法 wait()方法定义在Object类中,它的作用是让当前线程由“运行状态”进入到“等待(阻塞)状态”,同时释放它所持有的锁。被wai 阅读全文
posted @ 2019-08-29 10:01 Coding&Fun 阅读(593) 评论(0) 推荐(0)
摘要:JUC中的原子类是依靠volatile变量和Unsafe类中的CAS函数实现的。 1. volatile变量的特性 2. CAS函数保证数据更新的原子性 CAS是Unsafe 类中定义的函数,它只有如下三种形式: 我们发现Unsafe类只提供了3种CAS方法:compareAndSwapInt、co 阅读全文
posted @ 2019-08-29 09:54 Coding&Fun 阅读(419) 评论(0) 推荐(0)
摘要:1. AtomicLong是基本原子类中的一种 AtomicLong是对长整形进行原子操作。 1.1 AtomicLong类的函数列表 // 构造函数 AtomicLong() // 创建值为initialValue的AtomicLong对象 AtomicLong(long initialValue 阅读全文
posted @ 2019-04-02 17:54 Coding&Fun 阅读(260) 评论(0) 推荐(0)
摘要:根据修改的数据类型,可以将JUC包中的原子操作类可以分为4种,分别是: 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceAr 阅读全文
posted @ 2019-04-02 17:37 Coding&Fun 阅读(330) 评论(0) 推荐(0)
摘要:1. synchronized同步锁的原理 当我们调用某对象的synchronized方法或代码块时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互斥的。也就是说某一时刻,对象的同步锁只能被一个线程获取到。通过同步锁,我 阅读全文
posted @ 2019-03-31 22:36 Coding&Fun 阅读(238) 评论(0) 推荐(0)
摘要:1. start() 和 run()的区别说明 start()方法: 它会启动一个新线程,并将其添加到线程池中,待其获得CPU资源时会执行run()方法,start()不能被重复调用。 run()方法:它和普通的方法调用一样,不会启动新线程。只有等到该方法执行完毕,其它线程才能获得CPU资源。 st 阅读全文
posted @ 2019-03-31 21:51 Coding&Fun 阅读(1137) 评论(0) 推荐(0)
摘要:1.Java多线程的概念 同一时间段内,位于同一处理器上多个已开启但未执行完毕的线程叫做多线程。他们通过轮寻获得CPU处理时间,从而在宏观上构成一种同时在执行的假象,实质上在任意时刻只有一个线程获得CPU资源执行,这种方式叫做并发。 线程状态图 说明:线程共包括以下5种状态。1. 新建状态(New) 阅读全文
posted @ 2019-03-28 16:21 Coding&Fun 阅读(420) 评论(0) 推荐(0)
摘要:1. 并发:位于同一个处理器上的多个已开启未完成的线程,在任意一时刻系统调度只能让一个线程获得CPU资源运行,虽然这种调度机制有多种形式(大多数是以时间片轮巡为主)。但无论如何,都是通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。并发的线程之间有两种关系:同步、互斥。 2. 阅读全文
posted @ 2019-03-27 10:32 Coding&Fun 阅读(2840) 评论(1) 推荐(1)