多线程系列二 线程创建

java线程创建

java 中有两种创建线程方法:继承Thread类和实现Runnable接口.

  1. 实现Thread类线程创建:
class MyThread extends  Thread{
        @Override
        public void run() {
            System.out.println("MyThread");
        }
    }

调用代码:

MyThread myThread=new MyThread();
myThread.start();
  • 通过继承Thread创建的线程,start()方法只能调用一次,否则会报异常:
Exception in thread "main" java.lang.IllegalThreadStateException
  • 在调用myThread.start();时,并不代表先调用start()方法的线程会先执行。

实现Runnable接口.

  • 代码示例
class MyRunnble implements Runnable{
        public void run() {
            System.out.println("MyRunnble");
        }
    }

调用线程

 Thread myThread=new Thread(new MyRunnble());
        myThread.start();

注1:两种不同实现方法调用的方式是不一样的。

注2:在java中是不支持多重继承的,若想实现多个继承可以考虑使用实现Runnable的方法来创建线程。

源码解析

  1. Thread和Runnable

    通过查看Thread源码,其实Thread也是实现了Runnable接口

    public
    class Thread implements Runnable {
        /* Make sure registerNatives is the first thing <clinit> does. */
        private static native void registerNatives();
        static {
            registerNatives();
        }
    ......
    }

守护线程

java中线程有两种:用户线程和守护线程
- 守护线程是一种特殊的线程,通过setDaemon(true)来设置。
- 进程不存在非守护线程是,守护线程会自动销毁。
- 示例:GC线程

经典示例-数据共享安全-卖票

网上很多,这里就不自己写了。可以参考.
即 多个数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值