线程安全:线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。 理解:多个线程对同一个是数据进行写操作的时候,执行的结果和预期结果是一致的,就表示线程安全。(如购票系 ...
分类:
编程语言 时间:
2019-07-29 19:00:05
阅读次数:
127
Vector与ArrayList集合一样,内部使用数组实现,不过它是线程同步的,同步的代码: 同一时刻只能有一个线程能够编辑Vector,避免了多线程同时写不会出现我在ArrayList集合中所说的数组越界现象,但是同步需要花费较多的时间,所以增删的速度就慢,通过源码可以发现Vector在容量不够的 ...
分类:
编程语言 时间:
2019-07-29 00:41:34
阅读次数:
132
解释一下线程安全问题产生的原理 三个线程t0 t1 t2 。加上t0抢到cpu的执行权 t0抢到了cpu的执行权。,但是走到if语句的地方。执行了sleep,就失去了执行权 假设t2抢到了执行权也来执行run方法 t2睡醒了 重复票的问题。三个线程同时执行到了 输出的这行代码 总结 ...
分类:
编程语言 时间:
2019-07-28 19:49:41
阅读次数:
101
一 问题概述 线程或者进程之间有两种关系 同步和互斥,我们通常实现同步方法是使用线程的等待唤醒机制,而等待唤醒机制的使用是建立在互斥的继承上的。但是同步线程并不一定是必须要实现互斥的。比如一个线程打印A,一个线程打印B。这两个线程就没有互斥关系,但是提出这么个需求:交替打印A、B 。我们一般的解决方 ...
分类:
编程语言 时间:
2019-07-22 15:23:34
阅读次数:
352
1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例的产生,以达到节约资源的目的;控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2.尽量避免随意使用静态变量要知道,当某个对象被定义为static变量所引用,
分类:
编程语言 时间:
2019-07-15 22:43:35
阅读次数:
143
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以达到节约资源的目的; 控制数据共享,在不建立直接关联的条件下,让多个不 ...
分类:
编程语言 时间:
2019-07-15 22:34:59
阅读次数:
117
线程同步 synchronized:同步的 例:取钱 不做线程同步的场合,假设骗子和户主同时取钱,可能出现这种情况: 【骗子】取款2000:账户余额1000 【户主】取款2000:账户余额1000 结果是社会财富增加1000,银行不开心。 代码如下所示: 想要银行开心,就需要对线程进行同步处理,避免 ...
分类:
编程语言 时间:
2019-07-13 09:19:08
阅读次数:
108
线程同步机制 线程同步机制是一套用于协调线程间的数据访问及活动的机制。该机制用于保障线程安全及实现这些线程的共同目标。 java平台提供的线程同步机制: 锁 volatile关键字 final关键字 static关键字 其他(如:Object.wait()/Object.notify()等) 锁机制 ...
分类:
其他好文 时间:
2019-07-07 12:43:29
阅读次数:
112
Semaphore信号量通常做为控制线程并发个数的工具来使用,它可以用来限制同时并发访问资源的线程个数。 一、Semaphore使用 下面我们通过一个简单的例子来看下Semaphore的具体使用,我们同时执行10个计数线程,并定义一个Semaphore变量用来控制并发值,同一时间只允许两个线程并发执 ...
分类:
编程语言 时间:
2019-07-06 19:21:19
阅读次数:
109