微服务的启动
由于项目由单体变成了微服务的形式,因此项目的启动由一次变成了多次,但是单体项目与微服务有个不同点,就是微服务的服务之间存在依赖关系,不当的启动顺序会导致服务启动失败。
PS:以下仅作记录,没有真实使用过,
由于项目由单体变成了微服务的形式,因此项目的启动由一次变成了多次,但是单体项目与微服务有个不同点,就是微服务的服务之间存在依赖关系,不当的启动顺序会导致服务启动失败。
PS:以下仅作记录,没有真实使用过,
多线程间是互相协助和互相联系的,因此多线程间存在互斥和同步。
多线程间存在并发访问共享资源(修改资源)时就会出现互斥,保证共享数据在同一时刻只被一个线程使用。
多线程同步是指一个线程由于某种原因(等待对象释放之类的)需要等待另一个线程执行完才能继续执行的现象,即线程间互相等待。
互斥和同步是不可分离的,互斥是实现同步的一种手段,临界区、互斥量和信号量都是主要的互斥实现方式,互斥是因,同步是果,互斥是方法,同步是目的。
Java中wait()、notify()、notifyAll()三个方法就是用来实现线程同步的。
wait()处于等待队列,或超时结束等待。notify()通知第一个处于等待的线程,notifyAll()则唤醒所有等待线程一起竞争cpu。
Java中最基本的互斥同步手段就是synchronized。
临界段即多线程互斥使用共享资源的代码段,是一种加锁的机制,在任意时刻一个共享资源只能被一个线程使用。
Java中使用关键字synchronized定义临界段,能对共享对象进行加锁操作。
Spring提供了注解@Autowired用于依赖注入,同时也支持使用Java本身提供的注解@Resource用于依赖注入,这两个注解有什么异同呢?
进程通信(Interprocess Communication,IPC)是一个进程与另一个进程间共享消息的一种通信方式。消息(message)是发送进程形成的一个消息块,将消息内容传送给接收进程。
多线程开发中,通常会加锁做并发控制,但是加锁会让性能降低,因此有了CAS操作,但CAS操作会引发ABA问题。
说起分布式肯定绕不开两个理论:CAP理论和BASE理论。限于水平有限,本篇文章仅作记录用。
多线程开发中,让线程暂停执行是常见场景,Java提供了*sleep()和wait()*两种实现方法,但在具体使用上又有稍微差别。
String是Java中使用频率极高的一个类,但由于其是不可变,因此有StringBuffer和StringBuilder两个类来弥补在大量修改场景下的不足。