java Thread和Runnable区别

package com.tonyluis;
class MyThread extends Thread{
    private int ticketNum;
    private String name;
    public MyThread(String name,int ticketNum){
    	super("Thread:"+name);//线程名
        this.name =name;
        this.ticketNum=ticketNum;
    }
    public void run(){
    	int tmp=this.ticketNum;
    	String threadName = Thread.currentThread().getName();
        for(int i =0;i<tmp;i++){
            if(this.ticketNum>0){
                System.out.println("ThreadName:"+threadName+" "+this.name+"剩余 "+(this.ticketNum--));
            }
        }
    }
}
class MyThread1 implements Runnable{
    private int ticketNum =10;
    public void run(){
    	int tmp=this.ticketNum;
    	String threadName = Thread.currentThread().getName();
        for(int i =0;i<tmp;i++){
            if(this.ticketNum>0){
                System.out.println("ThreadName:"+threadName+" "+"剩余 "+(this.ticketNum--));
            }
        }
    }
}
public class TestThread {
    public static void main(String[] args) {
        new MyThread("窗口1",3).start();
        new MyThread("窗口2",4).start();
        new MyThread("窗口3",2).start();
        MyThread1 mt = new MyThread1();
        new Thread(mt,"窗口4").start();
        new Thread(mt,"窗口5").start();
        new Thread(mt,"窗口6").start();

    }  

}

运行结果:

ThreadName:Thread:窗口3 窗口3剩余 2
ThreadName:Thread:窗口1 窗口1剩余 3
ThreadName:Thread:窗口2 窗口2剩余 4
ThreadName:Thread:窗口1 窗口1剩余 2
ThreadName:Thread:窗口3 窗口3剩余 1
ThreadName:Thread:窗口1 窗口1剩余 1
ThreadName:Thread:窗口2 窗口2剩余 3
ThreadName:Thread:窗口2 窗口2剩余 2
ThreadName:Thread:窗口2 窗口2剩余 1
ThreadName:窗口5 剩余 10
ThreadName:窗口4 剩余 9
ThreadName:窗口6 剩余 10
ThreadName:窗口4 剩余 7
ThreadName:窗口5 剩余 8
ThreadName:窗口4 剩余 5
ThreadName:窗口6 剩余 6
ThreadName:窗口4 剩余 3
ThreadName:窗口5 剩余 4
ThreadName:窗口4 剩余 1
ThreadName:窗口6 剩余 2

继承Thread一般是多个线程分别完成自己的任务,实现Runable可以实现多个线程共同完成一个任务,而Thread需要通过内部类进行实现,实现起来比较麻烦

详见:http://blog.csdn.net/yilip/article/details/8147027

接口中不能有构造函数,所以,当你使用接口的时候,没法通过使用构造函数来传递变量。

时间: 2024-12-17 15:46:10

java Thread和Runnable区别的相关文章

Java - Thread 和 Runnable实现多线程

Java多线程系列--"基础篇"02之 常用的实现多线程的两种方式 概要 本章,我们学习"常用的实现多线程的2种方式":Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程池的内容,我们以后会详细介绍:现在,先对的Thread和Runnable进行了解.本章内容包括:Thread和Runnable的简介Thread和Runnable的异同点Thread和Runnable的

Java Thread and runnable

java中可有两种方式实现多线程, 一种是继承Thread类,(Thread本身实现了Runnable接口,就是说需要写void run 方法,来执行相关操作) 一种是实现Runnable接口 start, 和主线程一起执行,执行的顺序不确定 join,线程们 先执行,当所有的子线程执行完毕后,主线程才执行操作(文章最下面的例子) // 1 Provide a Runnable object, the Thread class itself implements Runnable//~~~ 1.

java: Thread 和 runnable线程类

Java有2种实现线程的方法:Thread类,Runnable接口.(其实Thread本身就是Runnable的子类) Thread类,默认有run(), start()方法,继承Thread类,需要实现run方法 Thread多线程,不能共享资源,保证数据的的统一(以商城商品数量,售票系统票的数量为例) 例如: public class MyThread extends Thread { private String name; // 定义name属性 public MyThread(Stri

Thread 和Runnable区别

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

NSThread - (void)start vs java Thread implements Runnable

This method spawns the new thread and invokes the receiver’s main method on the new thread. If you initialized the receiver with a target and selector, the default main method invokes that selector automatically. If this thread is the first thread de

Thread和Runnable区别

继承Thread类的,我们相当于拿出三件事即三个卖票10张的任务分别分给三个窗口,他们各做各的事各卖各的票各完成各的任务,因为MyThread继承Thread类,所以在new MyThread的时候在创建三个对象的同时创建了三个线程: 实现Runnable的, 相当于是拿出一个卖票10张得任务给三个人去共同完成,new MyThread相当于创建一个任务,然后实例化三个Thread,创建三个线程即安排三个窗口去执行. 在我们刚接触的时候可能会迷糊继承Thread类和实现Runnable接口实现多

Thread 和 Runnable

Thread 和 Runnable 1. 简介 Java 主要是通过 java.lang.Thread 类以及 java.lang.Runnable 接口实现线程机制的. Thread 类为底层操作系统的线程体系架构提供一套统一接口 Runnable 接口为关联 Thread 对象的线程提供执行代码 2. 创建 Thread 和 Runnable 对象 2.1 创建 Runnable 对象 创建 Runnable 有两种方式: 创建一个实现了 Runnable 接口的匿名类 Runnable r

java线程-Thread和Runnable的区别

进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小. 线程和进程一样分为五个阶段:创建.就绪.运行.阻塞.终止. 多进程是指操作系统能同时运行多个任务(程序). 多线程是指在同一程序中有多个顺序流在执行 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. Thread类是在java.lang包

Android开发:Handler Runnable和Thread之间的区别和联系 应用--------------------看完本篇,从此一览无余!

http://blog.csdn.net/yanzi1225627/article/details/8582081 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限. 下面看例子: package org.thread.demo; class MyThread extends