摘要: 概要: AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray这三个数组类型的原子类的原理和用法相似。本文章以AtomicLongArray对数组类型的原子类进行介绍。 AtomicLongArray介绍和函数列表 AtomicLongArra 阅读全文
posted @ 2020-05-04 00:55 qumasha 阅读(112) 评论(0) 推荐(1) 编辑
摘要: 概要 AtomicInteger,AtomicLong和AtomicBoolean这三个基本类型的原子类的原理和用法相似。本文章以AtomicLong对基本类型的原子类进行介绍 AtomicLong介绍和函数列表 AtomicLong的作用是对长整型进行原子操作。在32位操作系统中,64位的long 阅读全文
posted @ 2020-05-04 00:53 qumasha 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1、基本类型:AtomicInteger,AtomicLong,AtomicBoolean 2、数据类型:AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray 3、引用类型:AtomicReference,AtomicStampedRefer 阅读全文
posted @ 2020-05-04 00:49 qumasha 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 1、生产/消费者模型 生产/消费者模型是一个典型的多线程问题,涉及到的对象包括“生产者”、“消费者”、“仓库”和“产品”。它们之间的关系如下;(01)生产者仅仅在仓库未满的时候生产,仓库满了则停止生产 (02)消费者仅仅在仓库有产品的时候才能消费,仓库空则等待 (03)当消费者发现仓库没有产品的时候 阅读全文
posted @ 2020-05-04 00:48 qumasha 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1、线程优先级 Java中的线程优先级的范围是1~10,默认的优先级是5.高优先级线程会优先于低优先级线程执行。 Java中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明是用户线程。 用户线程一般执行用户级任务,而守护线程为“后台线程”,一般用 阅读全文
posted @ 2020-05-04 00:47 qumasha 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 1、join()介绍 join()定义在Thread.java中。join()的作用为:让“主线程”等待“子线程”结束之后才能继续运行。 示例: public class Father extends Thread { public static void main(String[] args) { 阅读全文
posted @ 2020-05-04 00:45 qumasha 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 1、sleep()介绍 sleep()定义在Thread.java中。sleep()的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠时间会大于/等于该休眠时间;在线程被重新唤醒时,它会由“阻塞状态”变为“就绪状态”,从而等待CPU的 阅读全文
posted @ 2020-05-04 00:42 qumasha 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 1、yield()介绍 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其他具有相同优先级的等待进程获取执行权;但是,并不能保证在当前线程调用yield()之后,其他具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行 2、yiel 阅读全文
posted @ 2020-05-04 00:40 qumasha 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1、wait(),notify(),notifyAll()等方法介绍 在object.java中,定义了wait(),notify(),notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll( 阅读全文
posted @ 2020-05-04 00:38 qumasha 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 1、synchronized原理 在Java中,每一个对象有且仅有一个同步锁。这也意味着同步锁依赖于对象而存在 当我们调用某对象的synchronized方法时,就获得了该对象的同步锁。例如,synchronized(obj)就获取了"obj这个对象"的同步锁 不同线程对同步锁的访问是互斥的,也即, 阅读全文
posted @ 2020-05-04 00:31 qumasha 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1、start()和run()的区别说明 start():它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。 run():run()和普通的成员方法一样,可以被重复调用,单独调用run(),会在当前线程中执行run(),而不会启动新线程 class MyThr 阅读全文
posted @ 2020-05-04 00:22 qumasha 阅读(262) 评论(0) 推荐(0) 编辑
摘要: Thread和Runnable 1、简介 Runnable是一个接口,该接口中只包含了一个run()方法。它的定义为: public interface Runnable { public abstract void run() } Runnable的作用为实现多线程。我们可以定义一个类A,实现Ru 阅读全文
posted @ 2020-05-04 00:19 qumasha 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 线程的五个状态: 1、新建状态(New): 线程对象被创建之后,就进入新建状态。 Thread thread = new Thread(); 2、就绪状态(Runnable):线程对象被创建之后,其他线程调用了该对象的start()方法,从而来启动该进程。 thread.start(); 处于就绪态 阅读全文
posted @ 2020-05-04 00:15 qumasha 阅读(112) 评论(0) 推荐(0) 编辑