一 同步的概念 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。 MyRunnable.java 1 package Thread; 2 public class MyRunn...
分类:
编程语言 时间:
2015-12-21 23:13:15
阅读次数:
285
假设一台5个人同时要上网每个人上时间1~5分钟不等加锁同步情况:排队上网,每个人都在自己的上网时间完毕后出来。静态方法同步代码class Person extends Thread{ private Random r = new Random(); private int Num; ...
分类:
编程语言 时间:
2015-11-09 18:58:01
阅读次数:
204
线程的同步
指当多个线程使用同一对象中被同步的资源时,要根据“先来后到”的顺序使用。
举个例子:现在只有一台电脑,现在有两个人A和B想玩游戏,一个人C想写代码,一个人D想听音乐。此时A、B、C三个人要抢这台电脑,谁先抢到谁用,用完了后面两个人在接着抢,谁抢到谁用。而D则不用,在另外三个人中任意一个人正在使用的时候,都可以播放音乐给他听;由此可以看出玩游戏和写代码的功能(方法)是要有“先来后到”...
分类:
编程语言 时间:
2015-08-13 14:25:49
阅读次数:
140
本文主要介绍一些java线程同步工具类,并不进行具体讲解,当有需要时,可以再去结合实例学习。 信号灯(Semaphore) 应用场景举例: 例如公司的打卡系统,如果有一个打卡机,那么一次就只能有一个人打卡,其余的人就被阻塞住,打卡完以后就可由下一个人打卡。如果有3个打卡机,那么一次就允许3个人或者少于三个人打卡,其余的人就得等待打卡机空闲下来才能继续打卡。 结果: 已进入1个线程,还可进入2个已进...
分类:
编程语言 时间:
2015-08-01 19:02:13
阅读次数:
132
/*
同步的前题:
1.必须要有两个或以上线程
2.必须是多个线程使用一个锁 优点:解决多线程安全问题
弊端:多个线程判断锁,消耗资源 */
package pack;
public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub...
分类:
编程语言 时间:
2015-07-05 09:43:08
阅读次数:
112
什么是“线程同步” ?
所谓线程同步就是若干个线程都需要使用一个 synchronized(同步)修饰的方法,当一个线程使用synchronized方法时,其他线程想使用这个synchronized方法时就必须等待,直到这个线程使用完该 synchronized 方法。
在下面的例子中有两个线程,会计和出纳,他俩共同拥有一个账本,她俩都可以使用saveOrTake(int...
分类:
编程语言 时间:
2015-06-15 14:41:43
阅读次数:
119
线程中的同步问题通常使用的是synchronized块,结合wait和notify方法,今天简单做了一个测试。发现当一个线程锁定了某个临界资源后另一个线程会自动等待,以往自己还认为需要自己写代码让其等待呢。。。共享资源:packagesm.model;
importorg.apache.log4j.Logger;
publiccla..
分类:
编程语言 时间:
2015-06-10 12:33:18
阅读次数:
139
Thread类基本信息方法
线程同步
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchr...
分类:
编程语言 时间:
2015-05-28 21:37:02
阅读次数:
215
1 public class ProducerConsumer { 2 public static void main(String[] args) { 3 SyncStack ss = new SyncStack(); 4 Producer p = new...
分类:
编程语言 时间:
2015-05-14 00:52:31
阅读次数:
131