JAVA自学历程——之一(简单线程实例)

实现多线程编程可以有三种方法:

继承Thread类实现Runnable接口在方法内部用匿名内部类来直接创建并启动新的线程


这里先讨论前两种方式:


继承Thread类:

public class ThreadTest extends Thread {
	private String name;
	public ThreadTest(){
		
	}//如果子类中不覆盖父类的无参构造函数,JVM在初始化实例时会自动调用父类的无参构造函数
	public ThreadTest(String name){
		this.name=name;
	}
	public void run()
	{	
		for(int i=0;i<10;i++)
			System.out.println(name+"run");
	}
	public static void main(String[] args){
		ThreadTest test1=new ThreadTest("T1");
		ThreadTest test2=new ThreadTest("T2");
		test1.start();
		test2.start();
	}

}


实现Runnable接口:

public class RunnableTest implements Runnable {
	private String name;
	public RunnableTest(String name){
		this.name=name;
	}
	public void run()
	{
		for(int i=0;i<10;i++)
			System.out.println(name+"run");
	}
	public static void main(String args[])
	{
		RunnableTest run1=new RunnableTest("r1");
		Thread demo1=new Thread(run1);
		
		RunnableTest run2=new RunnableTest("r2");
		Thread demo2=new Thread(run2);
		demo1.start();
		demo2.start();
	}

}

以上两种方式均可以实现多线程。但是两者有着区别,继承Thread类不容易共享资源,但实现接口就比较容易共享资源。

比如用继承的方式:

public class ThreadShare extends Thread{
	private String name;
	public ThreadShare(){
		
	}
	public ThreadShare(String name){
		this.name=name;
	}
	public void run(){
		for(int i=5;i>0;i--)
			System.out.println(name+" "+i);
	}

	public static void main(String[] args){
		ThreadShare T1=new ThreadShare("Thread1");
		ThreadShare T2=new ThreadShare("Thread2");
		ThreadShare T3=new ThreadShare("Thread3");
		T1.start();
		T2.start();
		T3.start();
	}
}

运行结果如图:



用实现接口的方式:

public class RunnableShare implements Runnable{
	private int ticket=5;
	public void run(){
		for (int i = 0; i <=20; i++) {
			if(this.ticket>0){
		
			System.out.println(Thread.currentThread().getName()+this.ticket--);
	}
		}
	}
	public static void main(String[] args){
		RunnableShare r1=new RunnableShare();
		new Thread(r1,"一号窗口").start();
		new Thread(r1,"二号窗口").start();
		new Thread(r1,"三号窗口").start();
		
		
	}
}

运行结果如图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值