Java 线程中创建线程的2中方法的具体区别

今天上网看相关资料发现有这么个说法:说继承Thread类的这种方法不能实现资源共享,举的例子就是说三个窗口卖100张票的但是我发现不是那么回事啊 public static void main(String[] args) { // TODO Auto-generated method stub MutliThread m=new MutliThread(); Thread t1=new Thread(m,"A"); Thread t2=new Thread(m,"B"); Thread t3=new Thread(m,"C"); t1.start(); t2.start(); t3.start(); }}class MutliThread extends Thread{ private int ticket=100;//每个线程都拥有100张票 public void run(){ while(ticket>0){ System.out.println(Thread.currentThread().getName()+"卖出一张,剩余" + (--ticket) +"张" ); } }}MutliThread这个类不论是继承Thread还是实现Runnable接口都是一样的效果吧?请高明的大神讲讲具体的情况吧或者推荐一个详细讲解线程的网址,单线程或者多线程的都行

第一种方式:使用Runnable接口创建线程

第二种方式:直接继承Thread类创建对象

使用Runnable接口创建线程

1.可以将CPU,代码和数据分开,形成清晰的模型

2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法

3.有利于保持程序的设计风格一致

直接继承Thread类创建对象

1.Thread子类无法再从其它类继承(java语言单继承)。

2.编写简单,run()方法的当前对象就是线程对象,可直接操作。

在实际应用中,几乎都采取第一种方式
分享
温馨提示:内容为网友见解,仅供参考
无其他回答

java中创建线程的两种方式有什么区别
第一种方式:使用Runnable接口创建线程 第二种方式:直接继承Thread类创建对象 使用Runnable接口创建线程 1.可以将CPU,代码和数据分开,形成清晰的模型 2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法 3.有利于保持程序的设计风格一致 直接继承Thread类创建对象 1.Thread子类无法再从其...

Java线程中run和start方法的区别?
两种方法的区别\\x0d\\x0a 1) start:\\x0d\\x0a用\\x0d\\x0astart方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的\\x0d\\x0astart()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间...

Java中Runnable和Thread的区别
Thread类中的两个最主要的方法:(1)run()—包含线程运行时所执行的代码,即线程需要完成的任务,是线程执行体。(2)start()—用于启动线程。实现Runnable接口的类必须使用Thread类的实例才能创建线程。通过实现Runnable接口来创建并启动多线程的步骤:

Java中继承thread类与实现Runnable接口的区别
在Java编程中,创建线程有两种主要方式:通过继承Thread类或实现Runnable接口。这两种方法各有优缺点,下面将详细解释两者之间的区别。继承Thread类 当通过继承Thread类创建线程时,类必须重写Thread类的`run()`方法,将线程运行的逻辑放在其中。新创建的类继承了Thread类的属性和方法。例如:javapublic class ...

Java中Runnable和Thread的区别
Runnable接口和Thread类是java中实现多线程的两种方法。主要区别在于:Thread是类,而Runnable是接口。抽象类和接口的区别如下:1. 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。2. 在接口中无成员变量,而抽象类中可有成员变量。在Java中引进接口主要是...

java线程池的创建方式有哪些?
Java线程池的创建方式主要有两种,分别是通过 Executors 类和 ThreadPoolExecutor 类实现。Executors 类提供了一系列静态方法用于创建常见的线程池类型,如 newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool。而 ThreadPoolExecutor 类是 Executor 框架的核心类,提供了更多自定义选项,如线程池...

创建线程的几种方式
Java中创建线程主要有三种方式:一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。二、通过Runnable接口...

Java中Runnable和Thread以及Callable的区别
在java中,其实java中实现 多线程有三种方法,一种是继承Thread类;第二种是实现Runnable接口;第三种是实现Callable接口。1,继承Thread Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限...

java如何创建线程
使用Java中的Thread类来创建线程。有两种方法可以创建线程:1. 继承Thread类,重写run()方法 ```java public class MyThread extends Thread { public void run() { \/\/ 线程执行的代码 } } \/\/ 创建线程并启动 MyThread thread = new MyThread();thread.start();```2. 实现Runnable接口,传入...

Java中Runnable和Thread的区别
Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?为了回答这个问题,我们可以通过编写一段代码来进行分析。我们用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示。首先这样...

相似回答