有相同资源,不同操作的线程
2017-08-18 19:54
169 查看
1 . 需求:男朋友往银行卡存钱,女朋友取同张银行卡的钱,用线程实现这个过程.
(其中,男存钱,女取钱是不同操作,但是银行卡的钱是共享资源.)这就属于有相同资源,不同操作的线程
2 . 男朋友为一个线程,女朋友为一个线程.
3 .首先,创建资源类Card
其次,实现男操作类,女操作类,都要继承Runnable.因为要实现资源共享.
其次,男女类重写run方法,实现各自的操作.
另外,男女要使用同一个Card对象,则男女类要有Card对象.
具体看代码吧还是:
总结:在主方法中,
1 . 先是创建资源类对象
2 . 创建男女操作类对象,将资源类对象作为男女类对象的构造参数
3 .创建Thread对象,有几个操作对象就创建几个Thread对象,将操作类对象作为Thread对象的构造参数,
4 .此时Thread对象调用start()时,jvm会执行run()方法,虽然将操作类对象传给了Thread对象,但是在源码中,还是操作类对象调用的run().
(其中,男存钱,女取钱是不同操作,但是银行卡的钱是共享资源.)这就属于有相同资源,不同操作的线程
2 . 男朋友为一个线程,女朋友为一个线程.
3 .首先,创建资源类Card
其次,实现男操作类,女操作类,都要继承Runnable.因为要实现资源共享.
其次,男女类重写run方法,实现各自的操作.
另外,男女要使用同一个Card对象,则男女类要有Card对象.
具体看代码吧还是:
package com.qf.demo2; /** * 线程: * * 共资源 一张银行卡 * * 你 往里存钱, 存10次 每次存1000 * 你女朋友 取钱, 取10次 每次取1000 * * 多线程实现存取过程 * * 共享资源 * 操作相同 * * * * 四个窗口 每个窗口 卖 100张票 没有共享资源 extends Thread * * 四个窗口 一共卖100张票 有共享资源 实现 Runnable * 四个窗口操作相同 都是卖票 * * * 没有共享资源 不同操作 单独创建 不同的 操作类 继承 Thread * 没有共享资源 相同操作 操作类 继承 Thread * 有共享资源 相同操作 资源类实现Runnable * 有共享资源 不同操作 单独创建资源类 让不同操作类实现 Ruannable * * */ public class Test { public static void main(String[] args) { Card card = new Card(); Boy boy = new Boy(card); Girl girl = new Girl(card); Thread thread = new Thread(boy); Thread thread2 = new Thread(girl); thread.start(); thread2.start(); } } class Card{ int money = 0; } class Boy implements Runnable{ Card card; public Boy(Card card) { this.card = card; } public void run() { for (int i = 0; i <10; i++) { card.money+=1000; System.out.println("你呀, 存了1000块钱,卡里余额为"+card.money); } } } class Girl implements Runnable{ Card card; public Girl(Card card) { this.card = card; } public void run() { for (int i = 0; i < 10; i++) { card.money-=1000; System.out.println("你女朋友啊, 取了1000跑了,卡里余额为"+card.money); } } }
总结:在主方法中,
1 . 先是创建资源类对象
2 . 创建男女操作类对象,将资源类对象作为男女类对象的构造参数
3 .创建Thread对象,有几个操作对象就创建几个Thread对象,将操作类对象作为Thread对象的构造参数,
4 .此时Thread对象调用start()时,jvm会执行run()方法,虽然将操作类对象传给了Thread对象,但是在源码中,还是操作类对象调用的run().
相关文章推荐
- 线程学习之多个线程对共享资源做不同操作
- 多线程并发局部变量、类变量(不同线程间相同资源)
- 不同线程操作控件
- EnterCriticalSection 多线程操作相同数据遇到的问题(线程锁)
- java 多线程6 不同线程操作不同的任务 用r.wait()和r.notify()方法
- 多线程操作共享资源时 设置线程等待
- 同一进程不同线程之间的资源共享与独享
- js方法名不同但是操作相同,这类方法整合
- 同一进程不同线程之间的资源共享与独享
- 线程开发中的资源操作
- 操作不同线程中的控件
- [案例ANR]媒体播放器操作线程与资源释放问题
- C#在一台客户端进行了某个操作以后如何让其他不同的客户端如何实现相同的操作(一)
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
- 黑马程序员——java中两个线程对同一个数据做不同操作的安全问题
- WPF 中出现不同线程间操作的解决
- C#在一台客户端进行了某个操作以后如何让其他不同的客户端如何实现相同的操作(二)
- (C#) 线程操作 - 限制可同时访问某一资源或资源池的线程数。Semaphore 类。Mutex类
- java线程同步时,不同线程通过不同方法,访问同一资源
- java 多线程,线程号不同,但线程名称相同