0%

由于项目由单体变成了微服务的形式,因此项目的启动由一次变成了多次,但是单体项目与微服务有个不同点,就是微服务的服务之间存在依赖关系,不当的启动顺序会导致服务启动失败。

PS:以下仅作记录,没有真实使用过,

阅读全文 »

多线程间是互相协助和互相联系的,因此多线程间存在互斥和同步。

互斥和同步

多线程间存在并发访问共享资源(修改资源)时就会出现互斥,保证共享数据在同一时刻只被一个线程使用。

多线程同步是指一个线程由于某种原因(等待对象释放之类的)需要等待另一个线程执行完才能继续执行的现象,即线程间互相等待。

互斥和同步是不可分离的,互斥是实现同步的一种手段,临界区、互斥量和信号量都是主要的互斥实现方式,互斥是因,同步是果,互斥是方法,同步是目的。

Java中的实现

Java中wait()、notify()、notifyAll()三个方法就是用来实现线程同步的。

wait()处于等待队列,或超时结束等待。notify()通知第一个处于等待的线程,notifyAll()则唤醒所有等待线程一起竞争cpu。

Java中最基本的互斥同步手段就是synchronized。

临界段即多线程互斥使用共享资源的代码段,是一种加锁的机制,在任意时刻一个共享资源只能被一个线程使用。

Java中使用关键字synchronized定义临界段,能对共享对象进行加锁操作。

进程通信(Interprocess Communication,IPC)是一个进程与另一个进程间共享消息的一种通信方式。消息(message)是发送进程形成的一个消息块,将消息内容传送给接收进程。

阅读全文 »

多线程开发中,通常会加锁做并发控制,但是加锁会让性能降低,因此有了CAS操作,但CAS操作会引发ABA问题。

阅读全文 »

String是Java中使用频率极高的一个类,但由于其是不可变,因此有StringBuffer和StringBuilder两个类来弥补在大量修改场景下的不足。

阅读全文 »