随笔分类 -  多线程

摘要:1、AQS——指AbstractQueuedSynchronizer类 AQS是Java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现的。AQS是独占锁(如ReentrantLock)和共享锁(如Semaphore)的公共父类。2、AQS锁的类别——分... 阅读全文
posted @ 2018-06-21 11:35 惶者 阅读(444) 评论(0) 推荐(0)
摘要:ReentrantLocakReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock锁在同一个时间点只能被一个线程持有;而可重入的意思是,ReentrantLock锁,可以被单个线程多次获取。ReentrantLock分为“公平锁... 阅读全文
posted @ 2018-06-15 16:15 惶者 阅读(183) 评论(0) 推荐(0)
摘要:根据锁得添加到Java时间,Java中的锁可以分为“同步锁”和“JUC包中的锁”同步锁即通过synchronized关键字来进行同步,实现竞争资源互斥访问的锁。同步锁的原理:每个对象有且仅有一个同步锁,不同线程能够共同访问该同步锁,但是,同一时点,该同步锁只能被一个线... 阅读全文
posted @ 2018-06-14 11:46 惶者 阅读(182) 评论(0) 推荐(0)
摘要:Condition控制线程通信 如果程序中不适用synchronized关键字来保证线程同步,而直接使用Lock对象来保证线程同步,则系统中不存在隐式的同步监视器,也就不能使用wait()、notify()、notifyAll()方法进行线程通信了。 ... 阅读全文
posted @ 2018-06-14 09:13 惶者 阅读(146) 评论(0) 推荐(0)
摘要:Java的JUC的原子操作类可以分为四类:1、基本类型:AtomicInteger、AtomicLong、AtomicBoolean2、数组类型:AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray3、引用类型... 阅读全文
posted @ 2018-05-08 20:08 惶者 阅读(263) 评论(0) 推荐(0)
摘要:生产者/消费者问题是个典型的多线程问题,类似于hello world对于一门编程语言而言,涉及的对象包括“生产者”、“消费者”、“仓库”和“产品”。该模型需要注意以下几点:1、生产者只有在仓库未满的时候生产,仓满则停止生产。2、消费者只有在仓库有产品的情况下才能消费,... 阅读全文
posted @ 2018-05-07 16:36 惶者 阅读(147) 评论(0) 推荐(0)
摘要:等待&唤醒关于Object类提供的wait、notify、notifyAll三个方法:wait():让当前线程处于等待(阻塞)状态,直到其他线程调用该同步监视器的notify(),notifyAll()方法来唤醒该线程,进入就绪状态。wait()会释放对当前线程的同步... 阅读全文
posted @ 2018-05-07 16:36 惶者 阅读(769) 评论(0) 推荐(0)
摘要:线程同步线程的同步是为了防止多个线程访问同一个数据对象时,对数据造成破坏。同步的方法就是使用synchronized关键字。每个对象有且仅有一个同步锁,意味着同步锁依赖于对象而存在。每个对象都有一个内置锁,当程序运行到非静态的synchronized同步方法时,自动获... 阅读全文
posted @ 2018-05-07 16:35 惶者 阅读(190) 评论(0) 推荐(0)
摘要:操作系统中的进程和线程的概念 进程是指一个内存运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程,比如windows下的一个运行的应用程序.exe就是一个进程。 线程是指进程中的一个执行流,一个进程可以运行多个线程。... 阅读全文
posted @ 2018-05-07 16:35 惶者 阅读(739) 评论(0) 推荐(0)
摘要:join、sleep、yield都是Thread类的方法join线程join()方法:让“主线程”线程等待“子线程”运行完之后再运行。//子线程public class son extends Thread(){ void run(){ .... 阅读全文
posted @ 2018-05-07 16:35 惶者 阅读(220) 评论(0) 推荐(0)