synchronized如何锁字符串?

记录一下synchronized锁字符串的问题,以及解决方案。

并发

内存泄漏和内存溢出

1. 内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 2. 内存溢出指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。 3. 内存泄漏和内存溢出的关系内存泄漏的堆积最终会导致...
并发

FutureTask详解

Future 表示了一个任务的生命周期,是一个可取消的异步运算,可以把它看作是一个异步操作的结果的占位符,它将在未来的某个时刻完成,并提供对其结果的访问。在并发包中许多异步任务类都继承自Future,其中最典型的就是 FutureTask。

并发

线程通信之生产者消费者传统版

实现一个简单的生产者消费者模式

并发

AQS详解

AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于AQS的。当然,我们自己也能利用AQS非常轻松容易地构造出符合我们自己需求的同步器。

并发

多线程之间按顺序调用,实现 A-> B -> C 三个线程启动,AA打印5次,BB打印10次,CC打印15次

实现场景多线程之间按顺序调用,实现 A-> B -> C 三个线程启动,要求如下:AA打印5次,BB打印10次,CC打印15次紧接着AA打印5次,BB打印10次,CC打印15次…来10轮 代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849...
并发

Lock类相关知识点

之前已经说道,JVM提供了synchronized关键字来实现对变量的同步访问以及用wait和notify来实现线程间通信。在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。
Lock类是Java类来提供的功能,丰富的api使得Lock类的同步功能比synchronized的同步更强大。

并发

7种阻塞队列

队列:FIFO(先进先出)的数据结构即为队列
阻塞队列:操作会被阻塞的队列即为阻塞队列, 在java中 BlockingQueue 接口在 Queue 接口的基础上增加了两组阻塞方法, offer(e,time) put , poll(time) take()

并发

Condition接口

简介wait()、notify()与synchronized配合可以实现等待通知,condition和Lock配合同样也可以实现等待通知,但是两者之前还是有区别的。 Condition定义了等待/通知两种类型的方法,当前线程调用这些方法时,需要提前获取到Condition对象关联的锁,**Condition对象是由Lock对象创建出来的(Lock.newCondition)**,换句话说...
并发

三个线程循环打印ABC代码实现

三个线程分别打印A,B,C,要求这三个线程一起运行,打印n次,输出形如“ABCABCABC….”的字符串。

并发