Thread 两种实现方式的区别
2015-09-27 23:15
225 查看
一、类继承方式实现线程
实现结果是3个窗口,每个窗口各卖50张。每次创建线程时,都会重新创建num变量。
二、接口实现方式实现线程
[code]package thread.ticket; class Ticket1 extends Thread{ public Ticket1(String name) { super(name); } int num=50; public void run() { for (int i = 0; i < 200; i++) { if(num>0) { System.out.println(getName()+"卖出第"+num-- +"张"); } } } } public class TicketDemo { public static void main(String[] args) { //3个窗口卖 new Ticket1("A").start(); new Ticket1("B").start(); new Ticket1("C").start(); } }
实现结果是3个窗口,每个窗口各卖50张。每次创建线程时,都会重新创建num变量。
二、接口实现方式实现线程
[code]package thread.ticket; /** * 比较两种方式的区别: * * 使用继承方式,资源不能共享; * * 继承方式,继承了Thread类之后,就不能再继承其他类了; * * * 从代码的简单性来性,来说继承方式简单些 * * * 推荐使用 接口方法, 方便以后拓展,资源共享 * * * */ class Ticket2 extends Object implements Runnable{ int num = 50; @Override public void run() { for (int i = 0; i < 200; i++) { if(num >0) { System.out.println(Thread.currentThread().getName()+"卖出第" +num-- +"张"); } } } } public class TicketDemo2 { public static void main(String[] args) { Runnable target = new Ticket2(); new Thread(target,"A").start(); new Thread(target,"B").start(); new Thread(target,"C").start(); } }
相关文章推荐
- Java下利用Jedis开发Redis
- jquery中html()/text()/val()区别
- Linux-Ubuntu14.04 通过mentohust实现锐捷校园网安装与认证
- 单例模式、双检测锁定DCL、volatile
- 制作导航栏
- C++中重载与重写的理解
- Java Web开发2___<jsp:include>和<%@ include %>的区别
- 2015第39周日
- iPhone指纹解锁功能设置
- iPhone指纹解锁功能设置
- poj 1404 I-Keyboard dp输出方案
- webrtc 后台搭建步骤及原理
- windows 测试数据库的连接状况-udl方法
- leetcode009 Palindrome Number
- 17、一般网络命令
- AO中的GraphicsLayer---------元素的容器
- 欧拉回路 (Euler Circuit) POJ 1780
- 软件设计的一般流程
- 面向对象特性——多态和抽象
- jquery兼容实验