java 继承Thread和实现Runnable的区别

1.class MyThread extends Thread{

private int a;

public void run(){

for( ; a < 100; a++  ){

System.out.println(getName() + " " + a);

}

}

public static void main(String [ ] args){

MyThread  one = new MyThread();

MyThread  two =  new MyThread();

one.start();

two.start();

}

}

这是继承了Thread的情形,new了两个线程one和two;每个线程都是独立的,输出结果是两个线程交替从0输出到99,互不干扰!

运行结果如图,可见两个线程两个a交替++:

2.接下来看一下另一种情况:

class MyThread implements  Runnable{

private int a;

public void run(){

for( ; a < 100; a++  ){

System.out.println(Thread.currentThread().getName() + " " + a); //必须要使用Thread.currentThread()方法

}

}

public static void main(String [ ] args){

MyThread  one = new MyThread();

new Thread(one).start();

new Thread(one).start();

}

}

这是Runnable的形式,可以看出,one这个线程是作为一个参数传递给了两个新生成的线程;这两个线程共享one,并操作one的变量a;所以整个程序只是在操作同一个a;

运行结果如下图所示:

java类的加载是延迟加载。

时间: 2024-10-12 14:47:40

java 继承Thread和实现Runnable的区别的相关文章

java中的线程问题(三)——继承Thread VS 实现Runnable的区别

从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别,总结几点:     用实现Runnable接口的特点 1.用实现Runnable接口的方法创建对象可以避免java单继承机制带来的局限: 2.用实现Runnable接口的方法,可以实现多个线程共享同一段代码(数据): 因此建议大家如果你的程序有同步逻辑需求,则使用Runnable的方法来创建线程.

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+"买票 "+

探Java多线程Thread类和Runnable接口之间的联系

首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说  有如下两种情况 情况1: 继承Thread类.重写其方法run() .    然后new之.调用Start()方法 1 public class TestThread 2 { 3 private int i; 4 public static void main(String[] args) 5 { 6 // T

多线程的创建方式---继承Thread和实现Runnable

继承Thread类创建多线程 1 package cn.ftf.thread; 2 /** 3 * 多线程实现方式一 继承Thread实现多线程,继承Thread,重写run方法 4 * @author 房廷飞 5 * 6 */ 7 public class StartThread extends Thread{ //对象继承Thread 8 public static void main(String[] args) { 9 StartThread st=new StartThread();

JAVA 两种方法实现多线程(继承Thread和实现Runnable接口)

1 package h14; 2 3 public class Demo { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Thread cat = new Cat(); 11 cat.start(); 12 Runnable dog = new Dog(); 13 Thread t = new Thread(dog);

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中继承thread类与实现Runnable接口的区别

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

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类与实现Runnable接口的区别

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