java多线程:继承Thread和实现Runable接口的区别

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

1.继承Thread——多线程执行各自的资源,线程执行的资源互不干涉,各自执行各自的

package TestThread;
public class TicketsThread {
     public static void main(String[] args) {
         Tickets tickets1 = new Tickets();
         tickets1.start();
         Tickets tickets2 = new Tickets();
         tickets2.start();
}
}
class Tickets extends Thread{
    private int num=10;
    @Override
    public void run() {
       while(num>0){
           sale();
       }

    }
        synchronized void sale() {
            if(num > 0){
                System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。");
                try{
                    Thread.sleep(100);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
}

控制台输出(各自操作各自的10张票,互不干涉):

2.实现Runnable接口——多线程共享同一资源:

package TestThread;
public class TicketsThread {
     public static void main(String[] args) {
         Tickets tickets = new Tickets();
         new Thread(tickets).start();
         new Thread(tickets).start();  

}
}
class Tickets extends Thread{
    private int num=10;
    @Override
    public void run() {
       while(num>0){
           sale();
       }

    }
        synchronized void sale() {
            if(num > 0){
                System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。");
                try{
                    Thread.sleep(100);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
}

控制台输出(两个线程操作共同的10张票,按照顺序依次递减):

转自:https://blog.csdn.net/qq_37791764/article/details/77752363

原文地址:https://www.cnblogs.com/vickylinj/p/10923491.html

时间: 2024-08-30 07:07:14

java多线程:继承Thread和实现Runable接口的区别的相关文章

Java多线程的两种实现方式:继承Thread类 & 实现Runable接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! 创建和启动线程的两种传统方式: Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法.

Java 多线程之 Thread 类 和 Runnable 接口初步使用

Thread 类 Thread 类是在 JDK1.0 时就存在的, 在 Java 中接触的多线程开发基本上都会从这个类开始. Thread之定义线程类 使用 Thread 创建线程的方法很简单, Thread 是一个类, 在需要创建线程时, 我们只需要继承这个类, 并将 run() 方法进行重写即可. class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = min

java 多线程 继承Thread和实现Runnable的区别

1)继承Thread: public class ThreadTest extends Thread { private int count; private String name; public ThreadTest(int count,String name){ this.count = count; this.name = name; } public void run() { while(count>0) { System.out.println(name+"买票 "+

多线程-----Thread类与Runnable接口的区别

第一个继承Thread类来实现多线程,其实是相当于拿出三件事即三个卖早餐10份的任务分别分给三个窗口,他们各做各的事各卖各的早餐各完成各的任务,因为MyThread继承Thread类,所以在newMyThread的时候在创建三个对象的同时创建了三个线程:实现Runnable的, 相当于是拿出一个卖早餐10份的任务给三个人去共同完成,newMyThread相当于创建一个任务,然后实例化三个Thread,创建三个线程即安排三个窗口去执行. 一个类只能继承一个父类,存在局限:一个类可以实现多个接口.在

多线程——继承Thread类

在具体介绍java多线程的使用之前,先让我们看看下面几个问题. 什么是多线程 简单的理解成:cpu"同时"执行多个任务,这就是多线程.(究其本质,当涉及到进程和线程的概念,上面的说法也不太合适,不过,简单的理解成这样也不为过.) 多线程解决了什么问题? 多线程通过充分利用cpu实现了提高计算机效率的问题. 使用了多线程,效率就一定会提高? 答案是否定的.在适当的情况下使用多线程,确实能提高效率,但是如果滥用多线程,有时候效率反而会降低.那么,什么情况下使用多线程会提高效率就成为了一个至

Java通过继承thread类与实现Runnable接口实现多线程的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 一.通过继承Thread类实现多线程 class MyThread extends Thread{ String name = null; int ticket = 0; public MyThread(String name){ this.name = name; } public synchronized v

Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别

1. Java中线程的创建有两种方式:  (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. 继承thread类 1 package com.threadtest; 2 clas

Java 多线程——Thread类和Runable接口

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限, 下面看例子: [java] view plaincopy package org.thread.demo; class MyThread extends Thread{ private String name; public

Java中实现多线程继承Thread类与实现Runnable接口的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票窗口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. 一:继承Thread类的方式 Java代码 package com.threadtest; cl