今天看了基础视频的线程,发现以前看书学到的东西好少,下面跟大家分享一下,说得多多指教,开始吧!
两种创建线程的方法及区别
两种创建线程的方法:
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();
- }
- }
复制代码 测试结果:
观察结果发现,每个线程对象都有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接口来创建线程类的方法!!!)
|
|