Runnable比Thread要多一些优势,主要是以下两点
- 避免点继承的局限,一个类可以继承多个接口。
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
- 适合于资源的共享
第一点就不多说了,至于第二点看以下两个代码示例就清楚了
static class TicketThread extends Thread {
// 一共十张票
private int ticketNum = 10;
@Override
public void run() {
for (int i = 0; i < 20; i ++) {
if (this.ticketNum > 0) {
System.out.println("卖票 ticket:" + this.ticketNum --);
}
}
}
}
public static void main(String[] args) {
TicketThread thread1 = new TicketThread();
TicketThread thread2 = new TicketThread();
TicketThread thread3 = new TicketThread();
thread1.start();
thread2.start();
thread3.start();
// 一共十张票
private int ticketNum = 10;
@Override
public void run() {
for (int i = 0; i < 20; i ++) {
if (this.ticketNum > 0) {
System.out.println("卖票 ticket:" + this.ticketNum --);
}
}
}
}
public static void main(String[] args) {
TicketThread thread1 = new TicketThread();
TicketThread thread2 = new TicketThread();
TicketThread thread3 = new TicketThread();
thread1.start();
thread2.start();
thread3.start();
}
以上是使用Thread方式写的,其实程序最后总共卖出了30张票,每个线程卖了10张。再看一下示例:
static class TicketThread implements Runnable {
// 一共十张票
private int ticketNum = 10;
public void run() {
for (int i = 0; i < 20; i ++) {
if (this.ticketNum > 0) {
System.out.println("卖票 ticket:" + this.ticketNum --);
}
}
}
}
public static void main(String[] args) {
TicketThread thread = new TicketThread();
new Thread(thread).start();
new Thread(thread).start();
new Thread(thread).start();
// 一共十张票
private int ticketNum = 10;
public void run() {
for (int i = 0; i < 20; i ++) {
if (this.ticketNum > 0) {
System.out.println("卖票 ticket:" + this.ticketNum --);
}
}
}
}
public static void main(String[] args) {
TicketThread thread = new TicketThread();
new Thread(thread).start();
new Thread(thread).start();
new Thread(thread).start();
}
使用Runnable方式的话,由于三个线程共享了资源,所以最终也是卖出10张票,不会多,从而实现了资源共享。
相关推荐
Java中Runnable和Thread的区别
认识Thread和Runnable 认识Thread的start和run 线程状态说明
主要介绍了Java中Thread 和Runnable的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
我相信对初学者这是很有帮助的,了解两中实现多线程的方法的不同这处
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
Thread和Runnable 的区别在面试当中是比较容易考的,自己又刚好在做这个的实验课题,于是乎,决定好好的学习这一部分知识,并把我查过的资料,通过自己的理解,给大家整理出来。 目录 面向小白学习法——Thread...
分别用Thread类和Runnable接口实现的阶乘的计算过程及结果的显示(本来一开始设置的不要积分,不知道为啥变得需要积分了,故此调整一下)
在第二种方法中,由于3个Thread对象共同执行一个Runnable对象中的代码,因此可能会造成线程的不安全,比如可能ticket会输出-1(如果我们Syste
thread 线程类 实现runnable接口
这是一道面试题,创建多线程时,使用继承Thread类和实现Runnable接口有哪些区别呢? 一、Thread 先来看看Thread类和其中的start()方法 class Thread implements Runnable{.....} // 可见,Thread类实现了Runnable...
Java中Runnable和Thread的区别分析.rar
java中实现多线程有两种方法:一种是继承Thread类,另一种是实现Runnable接口。
主要介绍了java 多线程Thread与runnable的区别的相关资料,java线程有两种方法继承thread类与实现runnable接口,下面就提供实例帮助大家理解,需要的朋友可以参考下
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。接下来通过本文给大家浅析Java中Runnable和Thread的区别,一起看看吧
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口,下面就拉分别介绍一下这两种方法的优缺点
本文首先介绍了线程的有关概念,接着介绍了线程的生命期及其状态间的转换,多线程的调度 原则,线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口
RunnableThread1.java
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
JAVA 的线程详解,有实例的!使用后别忘给个评价>>>>
主要介绍了Java 线程(Thread,Runnable,Callable)实例详解的相关资料,这里对java 线程的三种方法进行了对比,需要的朋友可以参考下