Java ---多线程1

Java 多种线程的创建方法

1:new Thread().start();

new Thread() {
    public void run() {
        //需要执行耗时的事件

    }.start();

new Thread() 方法被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪,不利于扩展。

优点:书写简单
缺点:只能执行一次,复用性不高。

2:extends Thread

class MyThread extends Thread {

    //调用父类带参数的构造方法
    MyThread (Object obj){
        super(obj);
    }

    @Override
    public void run() {

    }
}

.....
Thread myThread1 = new MyThread();     // 创建一个新的线程 
myThread1.start();                    

优点:比起1,2的方法可以多次创建,调用,创建灵活
缺点:扩展性不强,线程继承了Thread类,不能再继承其他父类

**3**implements Runnable

class myRunable implements Runnable {

    private int shareResource;//共享资源

    @Override
    public void run() {
    }
}

......

myRunable  loadRunnable = new myRunable ();
Thread myThread1 = new Thread(loadRunnable);
Thread myThread2 = new Thread(loadRunnable);
myThread1 .start();
myThread2 .start();

优点:创建一个资源,可以供多个线程来执行
缺点:书写复杂

Thread主要函数

run() //线程运行时所执行的代码

start() //启动线程

sleep(long millis) //线程休眠,交出CPU,让CPU去执行其他的任务,然后线程进入阻塞状态,sleep方法不会释放锁

yield() //使当前线程交出CPU,让CPU去执行其他的任务,但不会是线程进入阻塞状态,而是重置为就绪状态,yield方法不会释放锁

join(long millis) //等待线程终止,直白的说 就是发起该子线程的线程 只有等待该子线程运行结束才能继续往下运行

wait() //交出cpu,让CPU去执行其他的任务,让线程进入阻塞状态,同时也会释放锁

interrupt() //中断线程,自stop函数过时之后,我们通过interrupt方法和isInterrupted()方法来停止正在运行的线程,注意只能中断已经处于阻塞的线程

getId() //获取当前线程的ID

getName() //获取线程的名
setName() //设置线程的名

getPriority() //获取线程的优先级 一般用1-10的整数表示,默认优先级是5,优先级最高是10,优先级高的线程被执行的机率高

setPriority() //设置线程优先级

setDaemon()//设置为守护线程

isDaemo() //判断是否是守护线程

currentThread()//静态函数获取当前线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值