java基础---多线程

本文介绍了Java中创建线程的两种主要方式:继承Thread类与实现Runnable接口。通过具体示例对比了这两种方法的特点及适用场景,特别是针对资源共享方面进行了深入探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用继承Thread

package mypack;

public class Demo1 extends Thread
{
	private String name ;
	public Demo1(final String name)
	{
		this.name = name;
	}

	public void show()
	{
		for(int x = 0 ;  x  < 10 ; x++)
		{
			System.out.println( name + " ........... " + x);		
		}
	}

	public void run()												//重写父类Thread的run方法
	{
		show();
	}
}


/*
使用Thread继承方法的坏处:
	1.	Demo1是继承Thread的,如果Demo1还想继承其他类(比如Person类),以便获取到其他类的一些资源,就不行了
		因为Java是单继承的, 不允许public class Demo1 extends Thread,Person
	2.	各自的线程资源是独立的, 不便于共享,比如买票系统中的票是各个对象共享的,使用Thread继承方法无法实现
		资源共享
*/


import mypack.Demo1;

class ThreadDemo1
{
	public static void main(String[] args)
	{
		Demo1 demoa = new Demo1("zhangsan");	
		Demo1 demob = new Demo1("lisi");
//		demoa.show();
//		demob.show();
//		demoa.run();
//		demob.run();

		demoa.start();							//开启线程,调用线程的任务run方法
		demob.start();
		System.out.println(" Hello World !!!");
	}
}

2.  使用实现Runnable

package mypack;

public class Demo2 implements Runnable
{
	private String name ;
	public Demo2(final String name)
	{
		this.name = name;
	}

	public void show()
	{
		for(int x = 0 ;  x  < 10 ; x++)
		{
			System.out.println( name + " ........... " + x);		
		}
	}

	public void run()										//实现Runnable接口的run方法
	{
		show();
	}
}


/*
	1.	Runnable方法是实现接口, Demo2只是实现Runnable中的接口,并不是Runnable中的子类
	2.	Runnable仅仅将线程的任务进行了对象的封装,Thread也实现了Runnable接口,然后再扩充
		自己的内容
	3.	继承Thread类是覆盖父类Thread的run方法,实现Runnable接口是覆盖Runnable的run方法;
	
*/

import mypack.Demo2;

class ThreadDemo2
{
	public static void main(String[] args)
	{
		Demo2 demoa = new Demo2("zhangsan");	
		Demo2 demob = new Demo2("lisi");
		
		Thread t1 = new Thread(demoa);
		Thread t2 = new Thread(demob);

		t1.start();							//开启线程,调用线程的任务run方法
		t2.start();

		System.out.println(" Hello World !!!");
	}
}

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值