在多线程的实现方式中,Thread类与Runnable接口在使用上存在区别,如继承Thread的类不适合多个线程共享资源,而实现了Runnable接口可以方便的实现资源共享。
package com.zgy.bean;
public class thread3 extends Thread {
/**
* @param args
*/
private int ticket = 5;
private String name;
public thread3(String name){
this.name = name;
}
public void run(){
for(int i=1;i<=5;i++){
//还有票时,进行售票操作
if(ticket>0)
{
System.out.println(name+"卖票:ticket="+ticket--);
}
}
}
public static void main(String[] args) {
thread3 t1=new thread3("线程A");
thread3 t2=new thread3("线程B");
thread3 t3=new thread3("线程C");
t1.start();
t2.start();
t3.start();
}
}
在上面的例子中,我们可以看得出,程序中启动了3个线程,却分别卖出了各自的5张票,没有达到资源共享的目的。因为创建了3个线程就等于是创建了3个资源,每个线程对象都有5张票需要卖出,并且他们是独立的处理各自的资源。
从接下来的例子的运行结果中我们就可以看的出,Runnable能实现多个线程共享一个资源。
运行结果如下:
卖出:ticket=5
卖出:ticket=4
卖出:ticket=3
卖出:ticket=2
卖出:ticket=1
源代码如下:
package com.zgy.bean;
public class run3 implements Runnable{
/**
* @param args
*/
private int ticket = 5;
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=1;i<=5;i++){
if(ticket>0){
System.out.println("卖出:ticket="+ticket--);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
run3 r=new run3();
new Thread(r).start();
new Thread(r).start();
new Thread(r).start();
}
}
在多个线程中,实现Runnable接口与继承Thread类相比具备以下优势:
1.适合多个具有相同程序代码的线程处理同一个资源。
2.可以避免Java的单继承特征带来的局限。
3.代码能够被多个线程共享且与数据独立存在,从而增强了程序的健壮性。
分享到:
相关推荐
"Thread 线程类实现 Runnable 接口" Thread 线程类是 Java 中 Thread 和 Runnable 接口的实现,它提供了线程的基本操作和管理。下面是对 Thread 类的详细介绍: 1. Runnable 接口 Runnable 接口是 Thread 类的...
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
Thread类与Runnable接口(处理方案示例).md
java.Thread类与Runnable接口(解决方案).md
java.Thread类与Runnable接口(处理方案示例).md
这两种方法都可以实现阶乘计算的多线程化,主要区别在于继承`Thread`时,线程行为直接与类绑定,而实现`Runnable`接口时,线程行为是通过对象实例传递的。选择哪种方式取决于具体需求和设计考虑,例如是否需要复用类...
Java 中继承 Thread 类与实现 Runnable 接口的比较 在 Java 中,创建线程有两种方式:继承 Thread 类和实现 Runnable 接口。这些方式都可以用来创建线程,但它们之间有着一些关键的区别。 继承 Thread 类 继承 ...
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
在实际开发中,经常将Runnable接口与ExecutorService、Future等高级并发工具一起使用,以实现更复杂的线程管理和任务调度。ExecutorService是Java并发包(java.util.concurrent)中的核心接口,它提供了一种创建和...
### 实现Runnable接口 #### 实现方式 实现`Runnable`接口的类只需要实现`run()`方法即可。这种方式不涉及类的继承,而是通过`Thread`类的构造函数传递`Runnable`对象来创建线程。 #### 优缺点 - **优点**:实现了...
项目中碰到的,记录一下
在Java编程语言中,创建线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。由于Java的单继承特性,当一个类需要继承其他类时,就不能再直接继承`Thread`,这时实现`Runnable`接口就成为创建线程的优选方案。...
Thread类和Runnable接口的主要区别在于继承性。Thread类是Java中的一个类,它不能被继承,而Runnable接口是一个接口,可以被实现。Thread类的继承性带来了局限性,无法继承其他类,而Runnable接口可以继承其他类。 ...
### 多线程的Runnable与Thread的区别 在Java中实现多线程有两种主要方式:一种是继承`Thread`类;另一种是实现`Runnable`接口。本文将深入探讨这两种方法的区别,帮助初学者更好地理解并选择适合场景的多线程实现...
任何实现Runnable接口的类都可以被用来创建线程。 如何使用Runnable接口创建线程 使用Runnable接口创建线程的步骤如下: 1. 创建一个实现Runnable接口的类。 2. 在该类中重写run()方法,以便在线程中执行的操作。...
在Java中,实现多线程的两种主要方式分别是:**通过继承`Thread`类** 和 **实现`Runnable`接口**。下面将详细介绍这两种方式,并提供相应的示例程序。 #### 一、通过继承`Thread`类实现多线程 在Java中,可以通过...
2. **实现Runnable接口** - **步骤**: 1. 定义一个类实现`Runnable`接口。 2. 实现`run()`方法,编写线程体代码。 3. 创建该类的实例,并将其作为参数传递给`Thread`构造函数创建`Thread`对象,然后调用`start...
1. 什么是Runnable接口: 1.1 介绍Runnable接口 1.2 与Thread类的对比 2. 创建线程的方式: 2.1 继承Thread类 2.2 实现Runnable接口 3. 实现Runnable接口: 3.1 实现步骤 3.2 优点与用途 4. 启动线程: 4.1 使用...
Java 多线程 Thread 与 Runnable 的区别 Java 多线程技术是 Java 语言中的一种基础技术,用于实现多任务并发执行的功能。在 Java 中,实现多线程有两种方法:继承 Thread 类和实现 Runnable 接口。在本文中,我们将...