第二单元的主要内容为电梯的优化控制。在本单元中,我们学习了 Java 的多线程操作,了解了多线程同步控制的方法。同时,对电梯的控制算法有了初步的了解。 多线程同步策略 在本单元中,为了提高性能,以及减少多线程控制时可能出现的死锁 bug,我采用了“尽量减少锁”的策略。在这个策略下,我将“加锁的对象” ...
分类:
其他好文 时间:
2020-04-18 11:33:33
阅读次数:
61
重入锁ReentrantLock[Re entrant Lock] 1. ReentrantLock与Synchronized区别: 1. 重入锁可以反复进入 2. 如果同一个线程多次获得锁,那么在释放锁的时候,也需要释放相同次数 3. 若释放锁的次数过多,将会得到 java.lang.Illega ...
分类:
其他好文 时间:
2020-03-31 21:15:52
阅读次数:
74
本文源码:GitHub·点这里||GitEE·点这里一、并发问题多线程学习的时候,要面对的第一个复杂问题就是,并发模式下变量的访问,如果不理清楚内在流程和原因,经常会出现这样一个问题:线程处理后的变量值不是自己想要的,可能还会一脸懵的说:这不合逻辑吧?1、成员变量访问多个线程访问类的成员变量,可能会带来各种问题。publicclassAccessVar01{publicstaticvoidmain
分类:
编程语言 时间:
2020-03-30 00:22:20
阅读次数:
83
Collections工具类:操作集合的工具类 Java提供了一个操作Set List Map等集合的工具类:Collections,该工具类提供了大量方法对集合元素进行排序、查询和修改等操作。还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。 排序操作 查找、替换操作 同步控制 Col ...
分类:
其他好文 时间:
2020-03-17 12:41:03
阅读次数:
76
区别 这两个方法来自不同的类分别是Thread (static sleep)和Object (wait) 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块 ...
分类:
编程语言 时间:
2020-03-14 20:21:48
阅读次数:
68
这个工具类里提供了大量方法对元素进行排序,查询和修改。 可以将集合设置为不可变,对集合对象实现同步控制。 同步控制 将制定集合包装成线程同步的集合。解决多线程并发访问集合时的线程安全问题。用synchronizedXxxx方法。 设置不可变集合。 emptyXxx返回一个空的,不可变的集合 sing ...
分类:
其他好文 时间:
2020-02-29 18:52:20
阅读次数:
70
Collections是一个操作Set,List和Map等集合的工具类。 Collections中提供了一系列静态的方法对集合元素进行排序查询和修改等操作,还提供了对集合对象设置不可变和对集合对象实现同步控制等方法。(均为静态方法) 1. 排序操作(主要针对List接口相关) reverse(Lis ...
分类:
其他好文 时间:
2020-02-12 20:44:49
阅读次数:
76
1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)4、sle ...
分类:
编程语言 时间:
2020-02-07 11:12:30
阅读次数:
84
Collections 工具类和 Arrays 工具类常见方法 Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 v ...
分类:
其他好文 时间:
2020-01-05 11:34:36
阅读次数:
102
什么是分布式协调技术 分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。 在这图中有三台机器,每台机器各跑一个应用程序。然后我们将这三台机器通过网络将其连接起来,构成一个系统来为用户提供服务,对用户来说这个系统的架构是透明的,他 ...
分类:
其他好文 时间:
2020-01-03 21:17:04
阅读次数:
71