Runnable接口
a. 该接口只有一个方法:public void run();
b. 实现该接口的类必须覆盖该run方法
c. 实现了Runnable接口的类并不具有任何天生的线程处理能力,这与那些从Thread类继承的类是不同的
d. 为了从一个Runnable对象产生线程,必须再单独创建一个线程对象,并把Runnable对象传递给它。
实例:
package com.bijian.thread; /* * 图形抽象类 */ public abstract class Shape { abstract void draw (); }
package com.bijian.thread; public class Rectangle extends Shape implements Runnable { private int w, h; Rectangle() { // Create a new Thread object that binds to this runnable and start // a thread that will call this runnable's run() method new Thread(this).start(); } Rectangle(int w, int h) { if (w < 2) throw new IllegalArgumentException("w value " + w + " < 2"); if (h < 2) throw new IllegalArgumentException("h value " + h + " < 2"); this.w = w; this.h = h; } void draw() { for (int c = 0; c < w; c++) System.out.print('*'); System.out.print('\n'); for (int r = 0; r < h - 2; r++) { System.out.print('*'); for (int c = 0; c < w - 2; c++) System.out.print(' '); System.out.print('*'); System.out.print('\n'); } for (int c = 0; c < w; c++) System.out.print('*'); System.out.print('\n'); } public void run() { for (int i = 0; i < 5; i++) { w = rnd(30); if (w < 2) w += 2; h = rnd(10); if (h < 2) h += 2; draw(); } } int rnd(int limit) { // Return a random number x in the range 0 <= x < limit return (int) (Math.random() * limit); } }
package com.bijian.thread; public class RunnableDemo { public static void main(String[] args) { Rectangle r = new Rectangle(5, 6); r.draw(); // Draw various rectangles with randomly-chosen widths and heights new Rectangle(); } }
说明:
Rectangle r = new Rectangle(5, 6);
r.draw();
这两句代码会输出一个长5个*、宽6个*的矩形
new Rectangle();
这名代码会启动Rectangle构造方法中的线程,调用此类中的run方法,循环输出5个长和宽随机大小的矩形。
相关推荐
在实际开发中,经常将Runnable接口与ExecutorService、Future等高级并发工具一起使用,以实现更复杂的线程管理和任务调度。ExecutorService是Java并发包(java.util.concurrent)中的核心接口,它提供了一种创建和...
在`main()`方法中,我们实例化了一个`Demo`对象`d`,然后使用`Thread`类的构造方法`Thread(Runnable target)`创建了两个线程对象`t1`和`t2`,并将`d`作为参数传入。这样,`t1`和`t2`都将执行`Demo`类中的`run()`方法...
Java中的线程创建方式有多种,其中使用Runnable接口创建线程是一种最常用的方式。本文将详细介绍Java Runnable接口创建线程的相关知识点。 什么是Runnable接口 Runnable接口是Java语言中用于创建线程的接口。该...
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
任何实现了Runnable接口的类都可以创建一个Runnable对象,然后将这个对象传递给Handler的`post()`或`sendMessage()`方法,使得`run()`方法能在Handler的关联线程中执行。 `Looper`是Android消息循环的核心,它负责...
大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...
实现Runnable接口需要创建一个Thread类的实例,并将Runnable对象传递给Thread的构造函数。然后,调用Thread的start()方法来启动线程。 下面是一个实现Runnable接口的示例代码: ```java public static void main...
// 使用Runnable接口启动线程 public class TestMyRunnable { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start...
本课讲的是如何实现一个Runnable,在一个独立线程上运行Runnable.run()方法.Runnable对象执行特别操作有时叫作任务。...定义一个实现Runnable接口的类 代码如下: public class PhotoDecodeRunnable implemen
Java 实现 Runnable 接口适合资源的共享 Java 中创建线程通常有两种方式:继承 Thread 类和实现 Runnable 接口。虽然继承 Thread 类可以创建线程,但是在实际开发中,更常用的是实现 Runnable 接口。为什么呢?这是...
本文将详细讲解使用Runnable接口创建线程的方法。 首先,为什么我们要选择实现Runnable接口而不是直接继承Thread类呢?这是因为Java不支持多重继承,而一个类可以实现多个接口。因此,如果你的类已经继承了另一个类...
这两种方法都可以实现阶乘计算的多线程化,主要区别在于继承`Thread`时,线程行为直接与类绑定,而实现`Runnable`接口时,线程行为是通过对象实例传递的。选择哪种方式取决于具体需求和设计考虑,例如是否需要复用类...
1. **为什么要使用Runnable接口?** - Java中的类只能单继承,如果一个类需要继承其他类(例如,它可能已经继承了一个特定业务逻辑的类),那么就不能直接继承`Thread`。`Runnable`接口提供了解决这个问题的方法,...
本实例将深入讲解如何使用`Runnable`接口来实现多线程,并通过具体的`TestRunnable.java`源代码进行演示。 一、`Runnable`接口简介 在Java中,`Runnable`接口位于`java.lang.Runnable`包下,它定义了一个单一的方法...
在这个实例中,我们将深入探讨如何在Eclipse V4.2.0环境中,利用`Runnable`接口来实现这个功能。`Runnable`是Java多线程编程的核心组件,它允许我们定义一个可执行的任务,然后在不同的线程上运行。 首先,我们需要...
**一、实现Runnable接口** 1. 创建一个实现`Runnable`接口的类,如`RandomSquareRunnable`。在这个类中,我们需要重写`run()`方法,这是线程执行的主要逻辑。在这个`run()`方法里,我们可以编写绘制随机正方形的...
2. **实现Runnable接口** - **步骤**: 1. 定义一个类实现`Runnable`接口。 2. 实现`run()`方法,编写线程体代码。 3. 创建该类的实例,并将其作为参数传递给`Thread`构造函数创建`Thread`对象,然后调用`start...
- **实现Runnable接口**:更适合需要多重继承的场景,因为Java不支持多继承,但可以实现多个接口。需要通过创建`Thread`对象并传递`Runnable`实例来启动线程。 **输出结果分析** 在两种情况下,都使用了`...
一个类可以实现Runnable接口,然后通过将Runnable实例传递给Thread类的构造函数来创建线程。这种方式称为“实现线程”。 在实现Runnable接口时,我们需要重写`run()`方法,这是线程运行的主要逻辑所在。当线程被...