`

线程和Runnable接口的理解

阅读更多
通过卖票来进行解释:
1.ThreadTicket.java:
public static void main(String[] args) {
		// sell1();
		sell2();

	}

	public static void sell2() {
		MyRunnable mt = new MyRunnable();
		new Thread(mt).start();// 同一个mt,但是在Thread中就不可以,如果用同一
		new Thread(mt).start();// 个实例化对象mt,就会出现异常
		new Thread(mt).start();
	}

	public static void sell1() {
		MyThread mt1 = new MyThread();
		MyThread mt2 = new MyThread();
		MyThread mt3 = new MyThread();
		mt1.start();// 每个线程都各卖了10张,共卖了30张票
		mt2.start();// 但实际只有10张票,每个线程都卖自己的票
		mt3.start();// 没有达到资源共享
	}



2.MyThread.java:
public class MyThread extends Thread {
	private int ticket = 10;

	public void run() {
		for (int i = 0; i < 20; i++) {
			if (this.ticket > 0) {
				System.out.println("卖票:ticket" + this.ticket--);
			}
		}
	}
}



3.MyRunnable.java:

public class MyRunnable implements Runnable {

	private int ticket = 10;

	@Override
	public void run() {
		for (int i = 0; i < 20; i++) {
			if (this.ticket > 0) {
				System.out.println("卖票:ticket" + this.ticket--);
			}
		}
	}
}



分享到:
评论

相关推荐

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

    在Java编程语言中,创建线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。由于Java的单继承特性,当一个类需要继承其他类时,就不能再直接...不过,理解基本的`Runnable`接口实现是掌握Java多线程编程的基础。

    多线程的Runnable_和thread有什么区别

    #### 二、实现Runnable接口 1. **定义**: - `Runnable`接口同样位于`java.lang`包下。 - 实现该接口的类只需要提供`run()`方法的实现即可,然后可以通过`Thread`类来启动这个可运行的任务。 2. **示例代码**: ...

    实现Runnable接口的小程序

    Java提供了两种主要的方式来创建线程:继承Thread类和实现Runnable接口。本篇文章将深入探讨通过实现Runnable接口来创建线程的方法,以及这种方式相比于直接继承Thread类的优势。 首先,我们来看Runnable接口。在...

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

    本篇文章将深入探讨如何利用`Thread`类和`Runnable`接口来实现阶乘计算的多线程解决方案。阶乘计算是数学中的一个概念,对于非负整数n,其阶乘表示为所有小于等于n的正整数的乘积,记作n!。 首先,我们来看如何使用...

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

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

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

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

    java多线程Runnable实例

    虽然这些在`Runnable`实例中没有直接体现,但了解它们对于理解和使用多线程至关重要。 1. `synchronized`:用于同步访问共享资源,确保同一时间只有一个线程能执行特定代码块。 2. `wait()`, `notify()`, `...

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

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

    java线程_Thread_Runnable

    Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。 1. 继承Thread类创建线程: 当你选择继承Thread类时,你需要创建一个新的类,这个类扩展自Thread类。Thread类已经实现了Runnable接口,所以你不...

    java中使用实现Runnable接口的类实现一个多线程的程序示例

    起新线程需要new一个Thread对象,将实现Runnable接口的类作为Thread构造器参数。这样才能实现起新线程。 输出效果如下所示,main是一个线程、Runner 是另一个线程。 main Thread:------0 Runner Thread:------0 ...

    Java多线程实现Runnable方式

    在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。本篇主要讨论实现Runnable接口的方式。 首先,我们要了解实现Runnable接口的基本步骤: 1. 定义一个类实现Runnable接口。这一步是为了创建...

    Android 多线程下载简单demo之Runnable

    本篇将基于`Runnable`接口提供一个简单的多线程下载示例,帮助开发者理解如何在Android中实现这一功能。 首先,我们要明白在Android中,主线程(UI线程)负责处理用户交互和更新界面,因此,长时间的网络请求或计算...

    java实现多线程的两种方式继承Thread类和实现Runnable接口的方法

    **实现Runnable接口**的优势在于可以避免单继承的限制,因为一个类可以实现多个接口。此外,这种方式更符合“面向接口编程”的原则,使得代码更加灵活。 在定义线程时,通常推荐使用实现`Runnable`接口的方式,除非...

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

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

    用Runnable创建线程比较--java

    在Java中,有两种主要的方法来创建线程:通过继承`Thread`类和实现`Runnable`接口。本篇文章将深入探讨如何使用`Runnable`接口创建线程,并与`Thread`类创建线程的方式进行比较。 首先,我们来看`Runnable`接口。`...

    JAVA多线程Thread和Runnable的实现

    **实现Runnable接口** 如果不想受限于单继承,可以选择实现`Runnable`接口。创建一个类并实现`Runnable`接口,然后将这个类的实例传递给`Thread`类的构造函数,以此创建线程。`TwoThread`类就是一个例子,它实现了`...

    Java中Runnable和Thread的区别

    在Java编程语言中,多线程的实现有多种方式,其中最常见的是通过继承`Thread`类和实现`Runnable`接口。...总之,理解和合理运用这两种多线程实现方式,将有助于构建更加健壮和高效的并发应用程序。

    android demo,Runnable异步线程的处理

    首先,我们需要理解Android主线程,也被称为UI线程,它负责处理用户界面的更新和事件响应。如果在主线程中执行长时间运行的任务,会阻塞UI,导致应用无响应(ANR)。因此,Android开发者需要学习如何正确地使用异步...

    java大作业 一个时钟程序

    【Java大作业——一个时钟程序】 在Java编程学习中,设计一个时钟程序是一项常见的实践任务,旨在帮助学生巩固面向对象编程的...通过这样的练习,学生能更好地理解和应用Java语言,为未来的软件开发奠定坚实的基础。

    多线程thread线程的理解

    理解和妥善处理中断是编写可控制的多线程程序的重要部分。 10. **守护线程(Daemon Thread)**:守护线程在没有非守护线程运行时自动结束,常用于后台服务,如垃圾收集器。 通过学习和实践上述知识点,你将能够...

Global site tag (gtag.js) - Google Analytics