1 . wait() 方法使当前执行代码的线程进行等待,将当前线程置入"预执行队列",并且在wait()方法所在处停止执行,直到接到通知或者中断。 在调用wait之前,线程必须获得该对象的对象级别锁,即只能在同步方法或者同步代码块中才能调用wait方法。 调用wait()方法后当前线程自动释放锁。在 ...
分类:
编程语言 时间:
2017-07-17 20:06:27
阅读次数:
237
1 同步方法 VS 同步代码块: java中,每一个对象都有一把锁,线程用synchronized获取对象上的锁。 非静态同步方法:锁是类的对象的锁。 静态同步方法:锁的是类本身。 同步方法块:锁是可以选择的。所以能更加精确的控制。粒度更细致,可以更精确的控制对象锁。 2 确保N个线程可以访问N个资 ...
分类:
编程语言 时间:
2017-07-11 13:28:45
阅读次数:
265
synchronized(同步):当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代 ...
分类:
移动开发 时间:
2017-07-07 16:38:33
阅读次数:
211
通过Lock对象以及Condition对象实现多线程同步: 在之前的学习中,无论是通过synchronized建立同步代码块,还是通过synchronized建立同步函数,都是把对象看成一把锁来实现同步,这种解释有点牵强,而且在消费者—生产者的那个实例中,其实还有个问题,那就是在避免线程全部冻结时, ...
分类:
编程语言 时间:
2017-07-04 21:57:22
阅读次数:
184
一、考虑使用synchronized同步锁 对synchronized(this)的一些理解 上述内容参考:http://hacker0825.blog.163.com/blog/static/3457067720106994054575/ 一:synchronized同步代码块 输出: Threa ...
分类:
其他好文 时间:
2017-06-30 11:09:32
阅读次数:
160
synchronized是Java中的关键字,在并发编程中被称为内置锁或者监视器锁。当用它来修饰一个方法或者一个代码块的时候能够保证同一时刻最多只有一个线程执行该段代码。 Java的内置锁相当于一种互斥锁,最多只有一个线程能够持有这种锁,故而由这个锁保护的同步代码块会以原子方式执行,多个线程在执行该 ...
分类:
编程语言 时间:
2017-06-27 23:37:08
阅读次数:
241
一.高级类特性 static:修饰属性、方法、块、内部类 final:修饰类、常量属性、方法、局部常量 abstract:修饰类、方法 synchronized:修饰方法、同步代码块 二.static的使用 1.定义:static被称为静态,可以用来修饰类的属性或者方法。 2.作用:当static修 ...
分类:
其他好文 时间:
2017-06-20 21:08:23
阅读次数:
154
题外话: interrupt()方法 并不能中断一个正常运行的线程!!! 输出: mark ...... i=999 join()方法 具体用法http://www.cnblogs.com/luyu1993/p/7017927.html 这里看下它的源码 join()内部调用的是wait() 注意 ...
分类:
编程语言 时间:
2017-06-19 22:10:11
阅读次数:
175
多线程的运行出现了安全问题 原因: 当多条语句在操作同一个线程数据的时候,一个线程对多条语句只执行了一部分,还没执行完 另一个线程参与进来执行,导致共享数据的错误 解决办法: 对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其它线程不可以参与执行。 JAVA对于多线程安全问题,提供了 ...
分类:
编程语言 时间:
2017-06-19 18:39:40
阅读次数:
159
1.减少锁的持有时间,将不需要锁的操作从同步代码块的移除。 2.降低锁的粒度 ...
分类:
其他好文 时间:
2017-06-18 19:59:11
阅读次数:
147