实现Runnable接口适合资源的共享
2017-03-13 23:19
615 查看
Java当中,创建线程通常用两种方式:
继承Thread类
实现Runnable接口
但是在通常的开发当中,一般会选择实现Runnable接口,原因有二:
1、避免单继承的局限,在Java当中一个类可以实现多个接口,但只能继承一个类
2、适合资源的共享
原因1我们经常听到,但是2是什么呢?下面用一个例子来解释:
有5张票,分两个窗口卖:
继承Thread类:
运行结果:
很明显,这样达不到我们想要的结果,这样两个窗口在同时卖票,互不干涉。
实现Thread类:
运行结果:
这样两个窗口就共享了5张票,因为只产生了一个HelloThread对象,一个对象里边有一个属性,这样两个线程同时在操作一个属性,运行同一个run方法。
这样就达到了资源的共享
继承Thread类
实现Runnable接口
但是在通常的开发当中,一般会选择实现Runnable接口,原因有二:
1、避免单继承的局限,在Java当中一个类可以实现多个接口,但只能继承一个类
2、适合资源的共享
原因1我们经常听到,但是2是什么呢?下面用一个例子来解释:
有5张票,分两个窗口卖:
继承Thread类:
public class ThreadDemo { public static void main(String[] args) { HelloThread t1 = new HelloThread(); t1.setName("一号窗口"); t1.start(); HelloThread t2 = new HelloThread(); t2.setName("二号窗口"); t2.start(); } } class HelloThread extends Thread{ private int ticket = 5; public void run() { while(true){ System.out.println(this.getName()+(ticket--)); if (ticket<1) { break; } } } }
运行结果:
很明显,这样达不到我们想要的结果,这样两个窗口在同时卖票,互不干涉。
实现Thread类:
public class ThreadDemo { public static void main(String[] args) { HelloThread t = new HelloThread(); Thread thread1 = new Thread(t, "1号窗口"); thread1.start(); Thread thread2 = new Thread(t, "2号窗口"); thread2.start(); } } class HelloThread implements Runnable{ private int ticket = 5; public void run() { while(true){ System.out.println(Thread.currentThread().getName()+(ticket--)); if (ticket<1) { break; } } } }
运行结果:
这样两个窗口就共享了5张票,因为只产生了一个HelloThread对象,一个对象里边有一个属性,这样两个线程同时在操作一个属性,运行同一个run方法。
这样就达到了资源的共享
相关文章推荐
- java实现Runnable接口适合资源的共享
- 使用Runnable接口实现资源共享的一些心得
- 如果一个类通过继承Thread来实现多线程的话,则不适合多个线程共享资源,而通过实现Runnable就可以做到这一点
- java多线程------实现Runnable接口创建多进程,实现资源共享
- Java学习笔记之实现Runnable接口可以资源共享(卖票系统)
- 线程的实现(通过Runnable接口实现资源的共享:卖票)
- 在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable,可以实现资源共享
- 使用Runnable接口实现资源共享的一些心得
- Java 实现Runnable接口 资源共享
- 如果用Runnable就可以实现资源共享[Java多线程]
- 实现Runnable接口的多线程可以实现属性共享的原因
- 继承Thread类与实现Runnable接口创建线程对于类实例变量共享的区别
- Runnable可以实现资源共享但Thread不能实现资源共享?不,Thread能!
- 实现Runnable,轻松实现多线程间的资源共享
- Runnable可以实现资源共享但Thread不能实现资源共享的原因
- Runnable可以实现资源共享但Thread不能实现资源共享的原因
- 多线程Thread类和Runnable接口资源共享问题分析
- 使用Runnable实现资源共享
- 快速实现将linux配置成Samba客户端来访问windows服务器的共享资源!!!
- [转]跨域资源共享(Cross-Origin Resource Sharing)实现Ajax跨域请求