您的位置:首页 > 编程语言 > Java开发

Java基础学习----不同种创建线程的区别

2014-08-16 18:56 316 查看
今天看了基础视频的线程,发现以前看书学到的东西好少,下面跟大家分享一下,说得多多指教,开始吧!
两种创建线程的方法及区别
两种创建线程的方法:
1.继承Thread类,格式:class  线程名 extends Thread

class myThread extends Thread{}

复制代码

2.实现Runnable接口,格式:class 线程名 implements Runnable

class myThread implements Runnable{}

复制代码
区别分析:

示例目的:创建三个线程一起卖票,用两种方法做,看实际效果

方法1(继承Thread类):

public class ThreadDemo1 {

        public static void main(String[] args) {

                new Thread1().start();

                new Thread1().start();

                new Thread1().start();

        }

}

        class Thread1 extends Thread{

        int tickets =5;  //5张票

        public  void run(){

                while(true){

                        if(tickets > 0)

                        System.out.println("run() at "+Thread.currentThread().getName()+" is saling "+tickets--);

                }

        }

}

复制代码
测试结果:



观察结果发现,每个线程对象都有5张票,每个线程卖自己的5张票,没有共享这5张票。

方法2(实现Runnable接口):

public class ThreadDemo1 {

        public static void main(String[] args) {

                Thread1 t1 = new Thread1();

                new Thread(t1).start();

                new Thread(t1).start();

                new Thread(t1).start();

        }

}

        class Thread1 implements Runnable{

        int tickets =20;  //为了测试出效果,可以多增加票数

        public  void run(){

                while(true){

                        if(tickets > 0)

                        System.out.println("run() at "+Thread.currentThread().getName()+" is saling "+tickets--);

                }

        }

}

复制代码

测试结果:


 
观察发现,达到了目的,三个线程在一起共享这20张票。
总结:
1.继承Thread来创建线程类的方法,在继承了Thread后,不能再继承其他类,这样灵活性就不如实现Runnable接口来创建线程类的方法了;
2.正如上面所说的使用实现Runnable接口来创建线程类的方法可以达到资源共享。
(在这里说明一下:继承Thread类来创建线程类的方法也可以实现资源共享,只不过比较麻烦!!!因此,在创建线程类的时候,应优先选择实现Runnable接口来创建线程类的方法!!!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程 thread