推荐高洪岩的《Java多线程编程核心技术》,虽然很多代码都是纯粹为了炫耀技术,但看完之后再也不怕被多线程问倒了 随笔提一句,前面看了那多章同步代码块的内容,后面却发现lock完全可以取代。这本书在我看来可以砍掉一半,直接用Lock就好了。 问题1:用Java写代码来解决生产者——消费者问题。 使用l ...
分类:
编程语言 时间:
2016-05-20 00:55:13
阅读次数:
175
记下来,很重要。
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问ob...
分类:
编程语言 时间:
2016-05-18 18:11:50
阅读次数:
268
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法。 ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait() 与 notify/notifyAll() 的执行过程 ③中断 调用wait()方法进入等待队列 ...
分类:
编程语言 时间:
2016-05-14 22:54:44
阅读次数:
242
这篇文章介绍java死锁机制和线程间通信 死锁 死锁:两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象。 同步代码块的嵌套案例 避免死锁 有很多方针可供我们使用来避免死锁的局面: 避免嵌套封锁:这是死锁最主要的原因的,如果你已经有一个资源了就要避免封锁另一个资源。如果你运行时只有一个 ...
分类:
编程语言 时间:
2016-05-14 21:41:26
阅读次数:
307
一个计时器,同时开启100个线程,每个线程休眠1ms钟后,将全局静态变量count加1,这100个线程创建完之后,休眠500ms,计算总耗时,程序如下: 运行结果: Counter.count=96耗时:506 Counter.count不等于100是因为count++线程不安全。 加上同步代码块: ...
分类:
编程语言 时间:
2016-05-13 18:44:16
阅读次数:
342
今天自习复习了多线程 主要的关键词 Thread类用来继承的,不过一般不用,因为继承的单一性,不能多继承! Runnable 接口 implements用来实现的, 这两种都需要覆盖run();方法 synchronized ()同步代码块 synchronized方法 这时候需要一把锁,当线程执行 ...
分类:
编程语言 时间:
2016-05-13 14:17:41
阅读次数:
143
synchronized 与 ReentrantLock 简单实现...
分类:
其他好文 时间:
2016-05-13 01:24:47
阅读次数:
95
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能 ...
分类:
编程语言 时间:
2016-05-11 16:30:27
阅读次数:
216
1.同步代码块 在Thread子类run()方法代码块之外套一个下面的代码 这里的obj就是需要锁定的对象。 2.同步方法 只要在可变类中修改方法上,加上syschronized修饰即可。 注:同步方法的同步监视器是this。 3.同步锁 先在类中定义锁对象,然后在需要保证线程安全的方法中加锁(锁变 ...
分类:
其他好文 时间:
2016-05-11 09:38:19
阅读次数:
526
这一章节我们来讨论一下缓解同步方法的隐患-同步代码块。1.思路:把同步方法,降低同步的粒度,同步到代码块2.根据上一章节的例子,我们把代码修改一下(1)第一种方法,把同步标记移到更新的那一栏里面去,一般来说大部分都是更新的时候需要同步数据package com.ray.deepintothread.ch02.topic_9;
/**
* 从头认识多线程-2.8 缓解同步方法的隐患-同步代码块...
分类:
编程语言 时间:
2016-05-03 18:29:29
阅读次数:
210