[Java]Java实现线程间的资源共享
来源:互联网 发布:如何考上清华北大 知乎 编辑:程序博客网 时间:2024/06/06 03:31
原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:http://blog.csdn.net/humanking7/article/details/43537565
实现Runnable接口相比继承Thread类有如下好处:
- 避免单继承的局限,一个类可以同时实现多个接口
- 适合资源的共享.
继承Thread
类(不能实现资源共享)
代码如下:
public class MyThread extends Thread{ private int num = 5; //总共票数设定为5张 @Override public void run() { for(int i=0; i<10; i++){ if(this.num>0){ //打印买票信息 System.out.println(Thread.currentThread().getName() + "@买票: " + this.num--); } } } public static void main(String[] args) { MyThread th1 = new MyThread(); //线程一 th1.setName("售票口一"); MyThread th2 = new MyThread(); //线程二 th2.setName("售票口二"); MyThread th3 = new MyThread(); //线程三 th3.setName("售票口三"); //分别启动三个线程 th1.start(); th2.start(); th3.start(); }}
执行效果:
售票口二@买票: 5售票口二@买票: 4售票口二@买票: 3售票口二@买票: 2售票口二@买票: 1售票口一@买票: 5售票口一@买票: 4售票口一@买票: 3售票口一@买票: 2售票口一@买票: 1售票口三@买票: 5售票口三@买票: 4售票口三@买票: 3售票口三@买票: 2售票口三@买票: 1
总共5张票,启动了三个线程,从打印结果可以看出,一共卖出去了15张票,线程之间没有进行资源共享
实现Runnable
接口(容易实现资源共享)
代码如下:
public class MyRunnable implements Runnable{ private int num = 10; //总共票数设定为5张 @Override public void run() { for(int i=0; i<10; i++){ if(this.num>0){ //打印买票信息 System.out.println(Thread.currentThread().getName() + "@买票: " + this.num--); } } } public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread th1 = new Thread(myRunnable,"售票口一"); //线程一 Thread th2 = new Thread(myRunnable,"售票口二"); //线程二 Thread th3 = new Thread(myRunnable,"售票口三"); //线程三 th1.start(); th2.start(); th3.start(); }}
执行效果:
售票口一@买票: 10售票口一@买票: 7售票口一@买票: 6售票口一@买票: 5售票口一@买票: 4售票口一@买票: 3售票口一@买票: 2售票口一@买票: 1售票口三@买票: 8售票口二@买票: 9
虽然现在程序中有三个线程,但是三个线程总共卖出了10张票,也就是说使用Runnable
实现的多线程可以达到资源共享的目的.
0 0
- [Java]Java实现线程间的资源共享
- 【java】实现多线程资源共享
- java基于AbstractQueuedSynchronizer实现资源共享锁,限制并发线程数目
- 如何解决java线程中的资源共享的问题
- Java多线程如何实现资源共享
- Java 实现Runnable接口 资源共享
- java并发编程——线程异常处理\资源共享的问题\ThreadLocal
- java回忆录(3)—ThreadLocal解决线程资源共享问题
- (四) java并发编程--线程安全和资源共享
- JAVA线程-线程的实现
- python manager 实现线程资源共享
- (五十七)线程的资源共享、单例的实现
- Java的线程实现
- Java 线程的实现
- box资源共享----Java系列
- JAVA基础复习:资源共享
- 【Java】资源共享有冲突
- java多线程------实现Runnable接口创建多进程,实现资源共享
- 常见事务并发问题以及处理方法
- unity 基本函数整理[3_GUI控件+GUILayout界面布局]
- 一些常用快捷键总结:
- "grunt" 不是内部或外部命令,解决方法
- UIKit之View
- [Java]Java实现线程间的资源共享
- 苹果的数目问题
- oc的优缺点
- Eclipse中跟踪调试Android(Framework)源代码
- java中的匿名内部类
- 菜鸟的Linux学习笔记之命令history
- Activity和Service通信方式总结
- 2015-2-5工作日志-王亮晶
- vim 配置