Java多线程Runnable与Thread的区别

简介

在创建线程的时候会用到Runnable和Thread,这两者除过基本的区别之外,我根据自己的理解说说我对他的理解。

示例代码(摘录)

package com.ray.deepintothread.ch01.topic_3;

public class CurrentThreadSample {
	public static void main(String[] args) {
		ThreadFive threadFive = new ThreadFive();
		Thread thread = new Thread(threadFive, "myThread");// 设置运行线程的名称
		threadFive.setName("threadFive");// 设置实例的名称
		threadFive.myTest();
		thread.start();
	}
}

class ThreadFive extends Thread {
	public void myTest() {
		show();
	}

	private void show() {
		System.out.println("----------begin----------");
		// 这里指的是执行这个线程的名称
		System.out.println("Thread name:" + Thread.currentThread().getName());
		System.out.println(this);
		// this.getName指的是这个实例的名称
		// 由于是继承Thread,Thread本身可以设置名称
		System.out.println("Instance name:" + this.getName());
		System.out.println("----------end----------");
	}

	@Override
	public void run() {
		super.run();
		show();
	}
}
情景: 如果需要被调用的线程对象是通过实现Runnable接口实现的,那么在启动线程的时候必须通过Thread类创建一个线程实例,然后将继承了Runnable的类的实例作为参数传给Thread,之后才能启动线程,而不能直接通过Runnable的实现了创建的实例来启动。但是如果被调用的线程类是通过继承Thread类而来,那么就可以通过线程类的实例直接启动。

分析:通过实现Runnable接口而来的线程类实例化来的实例只是一个任务,并不具有线程的特性,这个任务要作为单独的线程去执行,必须传给Thread实例对象。而通过Thread实例化的实例才是真正意义上的线程对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值