1、volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比synchronized关键字更轻量级的同步机制。 2、从内存可见性的角度看,写入volatile变量相当于退出同步代码块,而读取volatile变量 ...
分类:
编程语言 时间:
2016-12-22 11:53:41
阅读次数:
186
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能 ...
分类:
编程语言 时间:
2016-12-19 19:12:14
阅读次数:
187
wait notify 几个注意点: wait 与 notify/notifyAll 方法必须在同步代码块中使用,即要先对调用对象加锁。 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。 当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程,然 ...
分类:
编程语言 时间:
2016-12-04 17:30:46
阅读次数:
182
代码块 1.代码块概述 在Java中,使用{}括起来的代码被称为代码块。 2.代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。 3.代码块的应用(创建对象,就会先走构造代码块然后再走构造方法) 1) 局部代码块 在方法中出现;限定变量生命周期,及早释放,提... ...
分类:
其他好文 时间:
2016-12-01 03:30:13
阅读次数:
191
概念:代码块是指用{}括起来的一段代码。 根据位置及声明的关键字不同,代码块可分为普通代码块、构造块、静态代码块、同步代码块4种。 1.普通代码块: 直接在方法中或在语句中定义 运行结果: 普通代码块 x=30代码块之外 x=100 2.构造块: 构造代码块是直接写在类中的代码块。 执行结果: 1、 ...
分类:
编程语言 时间:
2016-11-24 08:49:53
阅读次数:
209
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能 ...
分类:
其他好文 时间:
2016-11-14 12:51:13
阅读次数:
204
08.01_面向对象(代码块的概述和分类) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块。 B:代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。 局部代码块:只要是和局部有关系的,都是和方法有关系的 局部变量:在方法声明上或... ...
分类:
编程语言 时间:
2016-11-02 22:56:28
阅读次数:
255
问题引入:线程的安全问题 以下程序发现出现0号票甚至负号票,原因都是由多线程操作共享资源saleTask所导致的线程安全问题。 问题解决:同步代码块或同步方法 线程安全问题其实是由于多个线程同时处理共享资源导致的。要解决这个问题,那么必须保证用于处理共享资源的代码在任何时刻都只能有一个线程在访问。 ...
分类:
编程语言 时间:
2016-11-01 00:55:03
阅读次数:
290
1、面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块。 B:代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。 C:常见代码块的应用 a:局部代码块 在 ...
分类:
编程语言 时间:
2016-10-24 02:17:53
阅读次数:
264
1.多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解 决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲 系统处理性能 2. 出于这样的 ...
分类:
编程语言 时间:
2016-10-13 19:03:53
阅读次数:
158