Java线程总结
2017-10-22 11:27
155 查看
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接口的方式了。
相关文章推荐
- java线程总结(1/5)
- java 线程方法join的简单总结及与其他线程方法的区别
- java多线程总结二:后台线程(守护线程)
- java 线程的基础知识总结
- Java程序性能优化总结--------线程、I/O及系统篇
- java学习总结——线程信息获取和设置
- java线程总结(4/5)
- Java中守护线程的总结
- 关于java中的线程和线程池的一点总结
- Java中线程用法总结
- Java语法总结 - 线程
- Java并发总结(一):线程基础
- Java中守护线程的总结
- java线程安全总结(一)
- Java线程总结(2):线程同步
- Java线程总结
- Java中Thread线程总结(下)
- Java线程总结
- Java中线程应用总结
- Java多线程总结(4)— 线程范围内数据操作的隔离及ThreadLocal类