JAVA中创建线程对象的两种方法:继承Thread和实现Runable

本文介绍了Java中创建线程的两种主要方式:一是通过继承Thread类并覆盖run()方法;二是实现Runnable接口并通过Thread类传递该接口实例。两种方式各有优劣,前者简单直接但无法多重继承,后者灵活利于代码复用。

1.通过继承Thread类创建线程

    从Thread派生出一个新类,在其中加入属性和方法,同时覆盖run()方法。当创建这样一个派生类的新对象后,使用start()方法,即可启动该线程。

public class testThread {
	public static void main(String[] args) {
		Thread t = new MyThread(); //new 出新的线程对象
		t.start(); //此对象直接start
	}
}
class MyThread extends Thread{
	public void run(){
		for(int i=0;i<100;i++){
			System.out.println(" "+ i);
		}
	}



2.通过向Thread()构造方法传递Runnable对象来创建线程

 

其中Runnable对象是指实现了java.lang.Runnable接口的任何对象,Runnable接口只有一个方法:

 pulic void run();

这个run()方法实际上就是线程所要执行的代码。

要启动线程在中的代码,只需要执行Thread类的start()方法,则系统会在可能的情况下去执行run()方法中所规定的代码。

public class testThread2 {
	public static void main(String[] args) {
		MyTask mytask = new MyTask(100); //new 出线程对象mytask 
		Thread thread = new Thread(mytask); //由线程对象在new出thread线程对象 
		thread.start(); //最后new出的对象start
	}
}
class MyTask implements Runnable{
	private int n;
	public MyTask(int n){
		this.n = n;
	}
	public void run(){
		for(int i=0; i<n; i++){
			System.out.println(" "+ i)
                }
         }
}




 

两种方法的比较:

 1直接继承Thread类:这种方法的特点是: 编写简单,可以直接操纵线程;但缺点也是很明显的,因为若继承Thread类,就不能再从其他类来继承了。

 2使用Runnable接口:这种方法的特点是: 可以将Thread类与所要处理的任务的类分开,形成清晰地模型;还可以从其他类继承。


另外,若直接继承Thread类,在类中this即指当前线程;若使用Runnable接口,要在类中获得当前线程,必须使用Thread.currentThread()方法。






Java 中,使用 Thread创建线程主要有以下两种常见方法: ### 继承 Thread 类并重写 run 方法 创建一个类继承 Thread 类,并重写其 `run` 方法,该方法中的代码即为线程要执行的任务。然后创建该类的对象,并调用 `start()` 方法来启动线程。示例代码如下: ```java class MyThread extends Thread { // 重写 run 方法 @Override public void run() { System.out.println("你好!线程!"); } } public class TestDemo { public static void main(String[] args) { // 创建 MyThread 线程对象 Thread thread = new MyThread(); // 线程创建并运行 thread.start(); } } ``` 上述代码中,`MyThread` 类继承了 `Thread` 类,并重写了 `run` 方法。在 `main` 方法中,创建了 `MyThread` 类的对象 `thread`,并调用 `start()` 方法启动线程 [^2]。 ### 实现 Runnable 接口并将其作为参数传递给 Thread 类的构造函数 创建一个类实现 `Runnable` 接口,实现 `run` 方法,该方法中的代码即为线程要执行的任务。然后创建该类的对象,并将其作为参数传递给 `Thread` 类的构造函数,最后调用 `start()` 方法来启动线程。示例代码如下: ```java class MyRunnable implements Runnable { public void run() { System.out.println("Hello Runable"); } } public class RunnableExample { public static void main(String[] args) { Thread t = new Thread(new MyRunnable()); t.start(); } } ``` 上述代码中,`MyRunnable` 类实现了 `Runnable` 接口,并重写了 `run` 方法。在 `main` 方法中,创建了 `MyRunnable` 类的对象,并将其作为参数传递给 `Thread` 类的构造函数,创建了 `Thread` 对象 `t`,最后调用 `start()` 方法启动线程 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值