`

Runnable接口使用实例

阅读更多

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接口的小程序

    在实际开发中,经常将Runnable接口与ExecutorService、Future等高级并发工具一起使用,以实现更复杂的线程管理和任务调度。ExecutorService是Java并发包(java.util.concurrent)中的核心接口,它提供了一种创建和...

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

    在`main()`方法中,我们实例化了一个`Demo`对象`d`,然后使用`Thread`类的构造方法`Thread(Runnable target)`创建了两个线程对象`t1`和`t2`,并将`d`作为参数传入。这样,`t1`和`t2`都将执行`Demo`类中的`run()`方法...

    java Runnable接口创建线程

    Java中的线程创建方式有多种,其中使用Runnable接口创建线程是一种最常用的方式。本文将详细介绍Java Runnable接口创建线程的相关知识点。 什么是Runnable接口 Runnable接口是Java语言中用于创建线程的接口。该...

    java多线程、通信机制、Thread类以及Runnable接口间的使用实例

    1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。

    JAVA中使用Thread类和Runnable接口创建多线程

    在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。

    android handler runnable使用实例(关键是内部run中停止)

    任何实现了Runnable接口的类都可以创建一个Runnable对象,然后将这个对象传递给Handler的`post()`或`sendMessage()`方法,使得`run()`方法能在Handler的关联线程中执行。 `Looper`是Android消息循环的核心,它负责...

    使用Runnable模拟Callable接口实现线程有返回值

    大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...

    Java面向对象程序设计-并发(实现Runnable接口).pptx

    实现Runnable接口需要创建一个Thread类的实例,并将Runnable对象传递给Thread的构造函数。然后,调用Thread的start()方法来启动线程。 下面是一个实现Runnable接口的示例代码: ```java public static void main...

    Java多线程-创建多线程的基本方式二:实现Runnable接口

    // 使用Runnable接口启动线程 public class TestMyRunnable { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start...

    Android中实现Runnable接口简单例子

    本课讲的是如何实现一个Runnable,在一个独立线程上运行Runnable.run()方法.Runnable对象执行特别操作有时叫作任务。...定义一个实现Runnable接口的类 代码如下: public class PhotoDecodeRunnable implemen

    java实现Runnable接口适合资源的共享

    Java 实现 Runnable 接口适合资源的共享 Java 中创建线程通常有两种方式:继承 Thread 类和实现 Runnable 接口。虽然继承 Thread 类可以创建线程,但是在实际开发中,更常用的是实现 Runnable 接口。为什么呢?这是...

    java线程之使用Runnable接口创建线程的方法

    本文将详细讲解使用Runnable接口创建线程的方法。 首先,为什么我们要选择实现Runnable接口而不是直接继承Thread类呢?这是因为Java不支持多重继承,而一个类可以实现多个接口。因此,如果你的类已经继承了另一个类...

    【java学习记录】11.多线程实现阶乘计算(Thread类和Runnable接口)

    这两种方法都可以实现阶乘计算的多线程化,主要区别在于继承`Thread`时,线程行为直接与类绑定,而实现`Runnable`接口时,线程行为是通过对象实例传递的。选择哪种方式取决于具体需求和设计考虑,例如是否需要复用类...

    java多线程编程之使用runnable接口创建线程

    1. **为什么要使用Runnable接口?** - Java中的类只能单继承,如果一个类需要继承其他类(例如,它可能已经继承了一个特定业务逻辑的类),那么就不能直接继承`Thread`。`Runnable`接口提供了解决这个问题的方法,...

    java多线程Runnable实例

    本实例将深入讲解如何使用`Runnable`接口来实现多线程,并通过具体的`TestRunnable.java`源代码进行演示。 一、`Runnable`接口简介 在Java中,`Runnable`接口位于`java.lang.Runnable`包下,它定义了一个单一的方法...

    Eclipse编写的Android数字时钟应用实例(用新建Runnable的方法)

    在这个实例中,我们将深入探讨如何在Eclipse V4.2.0环境中,利用`Runnable`接口来实现这个功能。`Runnable`是Java多线程编程的核心组件,它允许我们定义一个可执行的任务,然后在不同的线程上运行。 首先,我们需要...

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

    **一、实现Runnable接口** 1. 创建一个实现`Runnable`接口的类,如`RandomSquareRunnable`。在这个类中,我们需要重写`run()`方法,这是线程执行的主要逻辑。在这个`run()`方法里,我们可以编写绘制随机正方形的...

    Java多线程技术 线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口

    2. **实现Runnable接口** - **步骤**: 1. 定义一个类实现`Runnable`接口。 2. 实现`run()`方法,编写线程体代码。 3. 创建该类的实例,并将其作为参数传递给`Thread`构造函数创建`Thread`对象,然后调用`start...

    在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口(csdn)————程.pdf

    - **实现Runnable接口**:更适合需要多重继承的场景,因为Java不支持多继承,但可以实现多个接口。需要通过创建`Thread`对象并传递`Runnable`实例来启动线程。 **输出结果分析** 在两种情况下,都使用了`...

    implements Runnable

    一个类可以实现Runnable接口,然后通过将Runnable实例传递给Thread类的构造函数来创建线程。这种方式称为“实现线程”。 在实现Runnable接口时,我们需要重写`run()`方法,这是线程运行的主要逻辑所在。当线程被...

Global site tag (gtag.js) - Google Analytics