两种线程创建的比较

目前为止,只知道两种线程创建的办法,一种是类继承,一种是接口的实现

就关于火车售票的问题来分析一下他们的区别

下面是通过接口的实现来创建线程的办法

package 两种创建线程的比较;

public class 两种创建线程的比较_Runnable {
         public static void main(String[] args) {
			TicketWindow2 th = new TicketWindow2();
			  new Thread(th,"窗口1").start();  //创建四个新线程
			  new Thread(th,"窗口2").start();
			  new Thread(th,"窗口3").start();
			  new Thread(th,"窗口4").start();
			}
	}

class TicketWindow2 implements Runnable{   //实现Runnable接口
	private int tickets = 100;
	public void run(){
		while(true){
			if(tickets > 0){
				Thread th = Thread.currentThread();   //获取当前线程
				String th_name= th.getName();         //获取线程名
				System.out.println(th_name+"正在发售"+tickets--+"张票");
			}
		}
	}
}
//这种实现Runnable接口的办法可以共享资源


下面是类继承的办法来实现创建线程的办法

package 两种创建线程的比较;

public class 两种创建线程的比较 {
	public static void main(String[] args) {
		new TicketWindow().start();      //创建一个TicketWindow对象并开启
		new TicketWindow().start();      //创建一个TicketWindow对象并开启
		new TicketWindow().start();      //创建一个TicketWindow对象并开启
		new TicketWindow().start();      //创建一个TicketWindow对象并开启
	}
     
}
class TicketWindow extends Thread{
	private int tickets = 100;
	public void run(){
		while(true){
			if(tickets > 0){
				Thread th = Thread.currentThread();    //用Thread类的变量接收当前线程
				String th_name=th.getName();            //用string类型的变量接受th线程的名字
				System.out.println(th_name+"正在发售第"+tickets--+"张票");
			}
				
		}
	}
}

运行程序后发现,通过类继承创建线程的办法是不能共享资源的,像上面的代码,是创建了四个线程,每个线程的tickets都是从100开始到0结束,所以每个窗口会打印100次

而通过接口来创建线程的办法则可以共享资源,这样四个窗口共打印了100次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值