多线程-静态代理的方式 - 实现Runnable接口
来源:互联网 发布:大数据的实践包括 编辑:程序博客网 时间:2024/05/22 12:32
在看这个小列子之前
建议大家 最好 先理解一下 静态代理的概念.
http://blog.csdn.net/makemeasmile/article/details/55667574
其实我们的多线程 以实现 Runnable 接口的形式 这种方式 就是采用了我们的 静态代理模式
启用多线程步奏:
1)、真实角色 - 这个角色 就是你要去做的事情
2)、代理角色 - 这个同样也是已经提供好的 代理类 Thread类
3)、有共同的接口- 这个接口当然是jdk已经提供好的 Runnable 接口
4)、代理角色持有 被代理 对象
5)、代理对象.start 方法 启用线程
推荐使用 实现Runnable 接口的方式 实现多线程,而不使用继承 Thread 的方式
1、避免单继承 (如果使用继承Thread方式,无法在继承其他类)
2、便于 共享资源 --- 看下面的列子 web12306 就是一个真实对象 也是共享的资源 大家都来抢他
按照以上步奏
// 创建真实角色
public class Web12306 implements Runnable{ / /真实角色
private int num =50;// 一共有50票的资源
@Override
public void run() {
while(true){
if(num<=0){
break;
}
System.out.println(Thread.currentThread().getName()+"抢到了第"+ num--+"张票");
}
}
public static void main(String[] args) {
//声明真实的对象实例
Web12306 web = new Web12306(); // 就这一个真实对象 所有代理都对这一个资源争抢运行
//代理对象
Thread thread1 = new Thread(web, "路人甲");
Thread thread2 = new Thread(web, "黄牛乙");
Thread thread3 = new Thread(web, "学生丙");
thread1.start();
thread2.start();
thread3.start();
}
}
运行结果:
路人甲抢到了第50张票
路人甲抢到了第47张票
学生丙抢到了第48张票
黄牛乙抢到了第49张票
学生丙抢到了第45张票
黄牛乙抢到了第44张票
路人甲抢到了第46张票
黄牛乙抢到了第42张票
学生丙抢到了第43张票
学生丙抢到了第39张票
黄牛乙抢到了第40张票
路人甲抢到了第41张票
黄牛乙抢到了第37张票
学生丙抢到了第38张票
黄牛乙抢到了第35张票
路人甲抢到了第36张票
黄牛乙抢到了第33张票
学生丙抢到了第34张票
黄牛乙抢到了第31张票
路人甲抢到了第32张票
黄牛乙抢到了第29张票
学生丙抢到了第30张票
黄牛乙抢到了第27张票
路人甲抢到了第28张票
黄牛乙抢到了第25张票
学生丙抢到了第26张票
黄牛乙抢到了第23张票
黄牛乙抢到了第21张票
黄牛乙抢到了第20张票
路人甲抢到了第24张票
黄牛乙抢到了第19张票
学生丙抢到了第22张票
黄牛乙抢到了第17张票
路人甲抢到了第18张票
黄牛乙抢到了第15张票
学生丙抢到了第16张票
黄牛乙抢到了第13张票
路人甲抢到了第14张票
黄牛乙抢到了第11张票
学生丙抢到了第12张票
黄牛乙抢到了第9张票
路人甲抢到了第10张票
黄牛乙抢到了第7张票
学生丙抢到了第8张票
黄牛乙抢到了第5张票
路人甲抢到了第6张票
黄牛乙抢到了第3张票
黄牛乙抢到了第1张票
学生丙抢到了第4张票
路人甲抢到了第2张票
总结:
启用线程两种方式:
1、继承Thread 类,重新run方法 ,然后对象.start 启动
2、实现 Runnable 接口, run方法
启动采用静态代理的模式:
1、创建真实角色
2、创建代理对象 (Thread 持有 真实角色 引用)
3、代理对象.start 启动
推荐使用 实现 Runnable 接口--- 避免单继承局限性 -- 便于共享资源
- 多线程-静态代理的方式 - 实现Runnable接口
- Java实现Runnable接口方式实现多线程的优势
- 多线程实现方式---实现Runnable接口
- JAVA 多线程的简单实现(runnable接口方式)
- 多线程_实现Runnable接口的方式卖电影票案例
- 多线程-实现Runnable接口的方式卖电影票案例
- 多线程实现Runnable接口
- Runnable接口实现多线程
- 多线程实现Runnable接口
- java实现多线程的两种方式继承Thread类和实现Runnable接口
- 实现Runnable接口实现多线程
- java runnable接口实现多线程
- java多线程实现:Runnable接口
- JAVA多线程实现Runnable方式
- JAVA多线程实现Runnable方式
- 09-多线程(创建线程的第二种方式—实现Runnable接口)1 2 10-多线程(第二种方式的细节) 11-多线程(第二种方式的好处)
- JAVA学习第二十三课(多线程(二))- (多线程的创建方式二 :实现Runnable接口(常用))
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- Problem on Group Trip UVALive - 7219 (模拟+优先队列处理)
- 2016多校训练1 hdu5733 tetrahedron
- Linux学习笔记之文件备份和还原
- HBuilder之MUI开发
- ANR分析(二)
- 多线程-静态代理的方式 - 实现Runnable接口
- Ubuntu 一键安装openresty
- 简单的邮箱验证页面跳转
- Keras Notes: Keras安装与简介
- java多线程详解一线程的内存模型和线程特性
- SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)
- CMS,全称Concurrent Low Pause Collector gc
- poj 1651Multiplication Puzzle dp
- 关关于android 微信sdk 分享 图片 到 朋友圈 的问题