Java线程总结
来源:互联网 发布:社会网络分析大数据 编辑:程序博客网 时间:2024/06/06 20:49
java多线程的实现方式
- 继承Thread类,重写run方法实现多线程操作
- 实现Runnable接口,重写run方法
借鉴个被用到烂的栗子
在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果。
继承Thread方式
class ThreadTest extends Thread { private int ticket = 10; private String name; public ThreadTest(String name){ this.name = name; } public void run() { while (true) { if (this.ticket > 0) { System.out.println(Thread.currentThread().getName() + "卖票---->" + (ticket--)); } } } public static void main(String[] args) { ThreadTest tt1 = new ThreadTest("一号窗口"); ThreadTest tt2 = new ThreadTest("二号窗口"); ThreadTest tt3 = new ThreadTest("三号窗口"); tt1.start(); tt2.start(); tt3.start(); }}一号窗口卖票---->10三号窗口卖票---->10三号窗口卖票---->9二号窗口卖票---->10三号窗口卖票---->8一号窗口卖票---->9三号窗口卖票---->7三号窗口卖票---->6二号窗口卖票---->9三号窗口卖票---->5一号窗口卖票---->8三号窗口卖票---->4二号窗口卖票---->8三号窗口卖票---->3一号窗口卖票---->7三号窗口卖票---->2二号窗口卖票---->7三号窗口卖票---->1一号窗口卖票---->6二号窗口卖票---->6一号窗口卖票---->5一号窗口卖票---->4二号窗口卖票---->5一号窗口卖票---->3二号窗口卖票---->4一号窗口卖票---->2二号窗口卖票---->3一号窗口卖票---->1二号窗口卖票---->2二号窗口卖票---->1
实现Runnable接口方式
public class RunnableTest implements Runnable { private int ticket = 10; @Override public void run() { while (true) { if (ticket > 0) { System.out.println(Thread.currentThread().getName() + " is selling" + ticket--); } else { break; } } } public static void main(String[] args) { RunnableTest rt = new RunnableTest(); new Thread(rt, "一号窗口").start(); new Thread(rt, "二号窗口").start(); new Thread(rt, "三号窗口").start(); }}一号窗口卖票---->10三号窗口卖票---->8二号窗口卖票---->9三号窗口卖票---->6一号窗口卖票---->7三号窗口卖票---->4二号窗口卖票---->5三号窗口卖票---->2一号窗口卖票---->3二号窗口卖票---->1
使用实现Runnable方式优点
- 适合多个相同类或相同对象的线程去操作统一资源,把线程和程序的代码完美的分离开来,较好地体现了面向对象的设计思想。
- 有效避免Java的单继承特性带来的局限由,我们经常碰到这样一种情况,即当我们要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方式,这个类就只能采用实现Runnable接口的方式了。
阅读全文
0 0
- Java线程总结
- Java线程总结
- Java线程总结
- java线程学习总结
- 【转】Java线程总结
- Java语法总结 - 线程
- Java线程总结
- Java线程总结
- Java线程总结
- Java线程总结
- Java语法总结 - 线程
- Java线程:大总结
- Java线程:大总结
- Java线程总结
- java线程安全总结
- Java线程总结
- java线程安全总结
- Java线程总结
- 机器学习实战学习笔记
- Java 会比 Go 长寿?编程语言的生命周期要如何判断
- HDFS数据不均衡解决方案:基于剩余空间大小的均衡策略
- 从奇虎360离职去创业型公司当CTO是一种怎样的体验?
- 设计模式之组合模式
- Java线程总结
- 快速排序
- Codeforces Problem 332B
- 使用cookie实现跨域系统单点登录
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
- 值传递String
- CTF小练
- java_归并排序
- 笑出腹肌的程序猿搞笑趣图