`

线程的2种实现方式

    博客分类:
  • java
阅读更多

1.继承Thread类

声明一个内部(外部)类,假如名字叫做 Thread1,继承Thread类,重写(Override)其中的run方法。

定义一个类,里面再定义一个Thread1类型的对象,调用start()方法。

举个例子吧:

public class ThreadTest1 {
public static void main(String[] args){
    Thread1 t1 = new Thread1();
    t1.start();   
}
}

class Thread1 extends Thread{
    @Override   
    public void run(){
        for(int i=0;i<100;i++){
            System.out.println("Thread 111111-------"+i);
        }
    }
}

 2.实现Runnable接口


声明一个内部(外部)类,假如名字叫做MyThread,实现Runnable接口,实现其中的run方法。

定义一个类,里面定义一个Thread类型的对象,把MyThread的对象当作参数传递进去,调用start方法。

public class ThreadTest2 {
public static void main(String[] args){
    MyThread mt = new MyThread();
    Thread t2 = new Thread(mt);
    //上面2行可以写成 Thread t2 = new Thread(new MyThread());
    t2.start();  
}
}

class MyThread implements Runnable{
    @Override   
    public void run(){
        for(int i=0;i<100;i++){
            System.out.println("Thread 22222-------"+i);
        }
    }
}

 3.比较一下两种方法吧


从我自己的理解来看,实现Runnable接口的代码更健壮。

原因很简单,java是单继承的,从长远假设来看,也许这个类改天想干点其它的事情,必须再继承某个类,因为你已经继承了Thread类,你就不能再继承了。

接口之所以灵活就在于,你可以实现多个接口,而且实现接口了还可以继续继承一个类,所以呢,给程序员带来更大的灵活性。

分享到:
评论

相关推荐

    多线程两种实现方式Java

    总结,理解并熟练掌握Java中的多线程实现方式是提升程序性能和编写高效并发代码的基础。无论你是通过继承`Thread`还是实现`Runnable`,都需要对线程同步和通信有深入的理解,以便在实际项目中解决并发问题。通过实践...

    java多线程每个线程挨着打印ABC的4种实现方式

    java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...

    线程的几种控制方式以及线程间的几种通信方式

    线程的控制方式和通信方式是并发编程中必须掌握的关键知识点,这对于理解和优化程序性能至关重要。以下是对这些概念的详细阐述: 一、线程的控制方式 1. **创建线程**:在Java中,可以通过实现Runnable接口或继承...

    线程同步的四种方式

    在多线程编程中,线程同步是一种控制多个线程并发执行时访问共享资源的方式,以避免数据不一致和死锁等问题。以下是对线程同步的四种主要方式的详细解释: 1. **事件(Event)** 事件是Windows API提供的一种线程...

    Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。

    ### Java中的两种多线程实现方式 在Java中,实现多线程的两种主要方式分别是:**通过继承`Thread`类** 和 **实现`Runnable`接口**。下面将详细介绍这两种方式,并提供相应的示例程序。 #### 一、通过继承`Thread`...

    java用线程的两种实现方式设计四个线程两次对J加1两次对J减1

    Java 语言提供了多种方式来实现多线程编程,今天我们将讨论其中的两种实现方式,并使用四个线程来演示对变量 J 的加一和减一操作。 实现方式一:通过继承 Thread 类 在 Java 中,我们可以通过继承 Thread 类来创建...

    线程间通信方式3:消息传递方式

    本示例“线程间通信方式3:消息传递方式”着重介绍了通过消息传递实现线程间的通信。下面将详细阐述这种通信方式以及相关的技术点。 1. **消息传递**: - 在Windows环境下,消息传递是通过消息队列、消息循环和...

    Qt创建线程的两种方式+线程池方式

    2.方式2:使用类对象的 moveToThread() 方式:将对象移动到线程中,并在线程中手动调用对象的工作函数来创建线程。 优点:对象与线程分离,使得线程逻辑和对象逻辑分离,提高了代码的可维护性和灵活性;可以将一个...

    创建线程类轻松实现线程管理

    Java提供两种主要方式来创建线程:继承`Thread`类或实现`Runnable`接口。这两种方法都可以让类成为可执行的线程,但它们之间存在一些差异。 1. 继承`Thread`类: 当你创建一个新的类并直接继承`Thread`类时,你可以...

    Android(Java)线程的两种实现方式

    本篇文章将深入探讨Android(基于Java)线程的两种主要实现方式:`Thread`类和`Handler-Looper-Messenger`机制。 一、`Thread`类 `Thread`类是Java中的基础线程类,也是Android线程编程的基础。创建一个新的线程...

    实现Runnable接口创建多线程.docx

    在Java编程语言中,创建线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。由于Java的单继承特性,当一个类需要继承其他类时,就不能再直接继承`Thread`,这时实现`Runnable`接口就成为创建线程的优选方案。...

    四种方式实现线程

    本文将深入探讨四种实现线程的方法:Thread类、Runnable接口、Callable接口以及ExecutorService。每种方法都有其特定的应用场景和优势,下面我们将逐一详细讲解。 1. **Thread类** 当直接继承`java.lang.Thread`类...

    实现Runnable接口和继承Thread类两种方式实现在屏幕上随机画正方形线程程序

    本文将深入探讨如何通过实现`Runnable`接口和继承`Thread`类两种方式来创建线程,并实现在屏幕上随机画正方形的程序。 首先,让我们了解线程的概念。线程是程序中的单一顺序控制流,一个进程可以包含多个线程,它们...

    Java中实现线程的三种方式及对比_动力节点Java学院整理

    Java 中实现线程的三种方式及对比 Java 中创建线程主要有三种方式:继承 Thread 类创建线程类、通过 Runnable 接口创建线程类、通过 Callable 和 Future 创建线程。 继承 Thread 类创建线程类 继承 Thread 类创建...

    用VB6实现多线程

    4. **处理线程间通信**:VB6不直接支持线程间通信,但可以通过全局变量、事件或内存映射文件等方式进行。 5. **结束线程**:当线程完成其任务时,调用`ExitThread`,并确保在主线程中关闭线程句柄。 6. **错误处理...

    windows线程几种同步方式

    在Windows操作系统中,多线程编程是常见的并发执行方式,以提高程序的执行效率。然而,多线程间的数据安全和资源管理问题也随之而来,这就需要我们使用线程同步技术来确保线程间的协调和避免数据竞争。本篇文章将...

    线程日志的实现代码 线程日志的实现代码

    线程日志是一种在多线程环境中记录程序运行情况的技术,它可以帮助开发者追踪各个线程的行为,定位并解决并发问题。在多线程编程中,由于多个线程可能同时访问和修改共享数据,因此可能会出现竞态条件、死锁等问题。...

    C#跨线程调用控件的四种方式(调用实例源码)

    下面我们将详细介绍C#中实现跨线程调用控件的四种常见方法,并提供相应的调用实例源码。 1. **控件的Invoke方法** 这是最常用且最直接的方法。`Control.Invoke`方法用于在控件所在的线程上执行指定的委托。如果...

    VB 实现多线程

    尽管Visual Basic (VB) 被认为是一种面向对象且易于学习的语言,但许多人对其支持多线程的能力持怀疑态度。然而,通过结合使用VB6和Windows API,我们完全可以在VB环境中实现高效的多线程编程。 #### 二、多线程...

    Qt两种方法实现多线程并安全结束线程及QMutex加锁Qt单例化实现

    - **线程同步**:QMutex是一种互斥锁,用于保护共享资源不被多个线程同时访问。在访问关键区域(可能引发竞争条件的部分)之前,应调用`lock()`,访问结束后调用`unlock()`。 - **加锁技巧**:确保每次`unlock()`...

Global site tag (gtag.js) - Google Analytics