一个类继承Thread又实现了Runnable的详细解说

学过Java的同学都知道,实现线程的方法有两种

1、继承Thread,代码简单,直接编写子类,然后new子类对象,调用父类的start()方法,

public class Demo {

	public static void main(String[] args) {
		Test t = new Test();
		t.start();
	}

	static class Test extends Thread {

		public void run() {
			super.run();
			System.out.println("run");
		}

	}
}

2、实现 Runnable 接口,解决Java单继承的局限性,可以多个线程共享这个Runnable 接口的对象(多线程处理同一资源文件,例如,迅雷下载,窗口售票)

public class Demo {

	public static void main(String[] args) {
		Thread t = new Thread(new Test());
		t.start();
	}

	static class Test implements Runnable {

		public void run() {
			System.out.println("run");
		}
	}
}

如下情况:

<span style="font-size:18px;color:#ff0000;">public class Demo extends Thread implements Runnable {

	public void run() {
		super.run();
		System.out.println("run");
	}

	public static void main(String[] args) {
		Demo d=new Demo();
		d.run();
	}

}</span>

一个类同时继承了Thread类和Runnable,请问这还是一个多线程吗

回答是肯定的,这是多线程,但是上面写法是不正确的 ,  Thread类实现了Runnable接口的

上述代码,Demo是Thread的子类,Thread实现了Runnable接口,所以d也是实现了Runnable接口的一个对象,将上述代码修改一下,也是一个线程。

<span style="color:#009900;">public class Demo extends Thread implements Runnable {

	public void run() {
		super.run();
		System.out.println("run");
	}

	public static void main(String[] args) {
		Thread t = new Thread(new Demo());
		t.start();
	}

}</span>
时间: 2024-08-27 07:05:41

一个类继承Thread又实现了Runnable的详细解说的相关文章

JavaScript一个类继承中实现

JavaScript类是默认原型对象继承: var Person = function() { this.name = "people"; this.hello = function() { console.log("hello user:" + this.name); } } var User = function() { this.name = "user"; this.hello = function() { User.prototype.

JAVA学习第二十二课(多线程(二))- (多线程的创建方式一 :继承Thread类)

线程是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 创建新执行线程有两种方法. 一种方法是将类声明为 Thread 的子类.该子类应重写Thread 类的run 方法.另一种方法是声明实现 Runnable 接口的类.该类然后实现run 方法. 创建线程方式一:继承Thread类 一.创建线程的步骤: 1.定义一个类继承Thread类 2.覆盖Thread中的run()方法 3.直接创建Thread类子类的对象 4.调用start方法开启线程,并调用线程的任务run方法

创建多线程方式一(继承Thread类)

步骤: 1.定义一个类继承Thread. 2.重写run方法. 3.创建子类对象,也就是线程对象. 4.调用start方法.开启线程并让线程执行,同时还会告诉jvm去调用run方法.(start做了两件事,开启线程和调用run方法.) 线程对象调用run方法和调用start方法区别(面试常考): 调用run方法不开启线程.仅是对象调用方法. 调用start开启线程,并让jvm调用run方法在开启的线程中执行. 实例: class Demo extends Thread{ private Stri

如何创建线程第一种继承Thread类

步骤 1:定义一个类 继承Thread类.2:重写Thread类的run方法.3:直接创建Thread的子类对象创建线程.4:调用start方法开启线程并调用线程的任务run方法执行.----------------------------------------------- package TestException; public class test1 { public static void main(String[] args) { // 3:直接创建Thread的子类对象创建线程.

java多线程:继承Thread和实现Runable接口的区别

如果一个类继承Thread,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享. 1.继承Thread——多线程执行各自的资源,线程执行的资源互不干涉,各自执行各自的 package TestThread; public class TicketsThread { public static void main(String[] args) { Tickets tickets1 = new Tickets(); tickets1.start(); Tickets ti

多线程——继承Thread类

在具体介绍java多线程的使用之前,先让我们看看下面几个问题. 什么是多线程 简单的理解成:cpu"同时"执行多个任务,这就是多线程.(究其本质,当涉及到进程和线程的概念,上面的说法也不太合适,不过,简单的理解成这样也不为过.) 多线程解决了什么问题? 多线程通过充分利用cpu实现了提高计算机效率的问题. 使用了多线程,效率就一定会提高? 答案是否定的.在适当的情况下使用多线程,确实能提高效率,但是如果滥用多线程,有时候效率反而会降低.那么,什么情况下使用多线程会提高效率就成为了一个至

多线程——继承Thread类别

详细java此前使用多线程,让我们来看看下面的问题. 什么是多线程 简单的理解成:cpu"同一时候"运行多个任务,这就是多线程. (究其本质,当涉及到进程和线程的概念.上面的说法也不太合适,只是.简单的理解成这样也不为过.) 多线程攻克了什么问题? 多线程通过充分利用cpu实现了提高计算机效率的问题. 使用了多线程,效率就一定会提高? 答案是否定的.在适当的情况下使用多线程,确实能提高效率,可是假设滥用多线程,有时候效率反而会减少.那么,什么情况下使用多线程会提高效率就成为了一个至关重

实现多线程的两种方法:继承Thread类或实现Runnable接口

实现多线程的两种方法:继承Thread类或实现Runnable接口 Java中实现多线程有两种方法:继承Thread类和实现Runnable接口,在程序开发中只要是多线程,我们一般都是实现Runnable接口,原因归结为一点:实现接口比继承类要好. 多线程的第一种实现方式:继承Thread类 步骤如下 创建一个继承Thread的类(假定为A),并重写Thread的run方法 构造一个A类对象,假定为aa 调用aa的start方法.(start方法是从Thread继承过来的) 具体例子如下 pac

Java中继承thread类与实现Runnable接口的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. Java代码   package com.threadtest; class MyThread e