day 16:线程

线程的实现方式:

  • 继承Thread类
  • 重写子类的run方法
  • 创建该子类的对象

线程的常用API

  • static void sleep(long millis)
    线程睡眠:在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响,该线程不丢失任何监视器的所属权
public class ThreadControlDemo1 {
    public static void main(String[] args) throws InterruptedException {
        Thread.sleep(2000);
        //注意:这句代码放在哪个线程中,哪个线程在执行到这句代码时就会休眠
        //此线程就会进入阻塞态,当给定的休眠时间到该线程又会重新进入就绪态,等待CPU
        TimeUnit.MILLISECONDS.sleep(1000);
        for (int i = 0; i <10 ; i++) {
            System.out.println("haha");
        }
    }
}

-public void interrupt()
中断线程:如果线程在调用Object类的wait、join、sleep方法中受阻,则其中断状态将被清除,它还将收到一个InterruptedException;interrupt可以在一个线程中控制另一个线程,这种控制能力依赖的是异常的代码控制
如果中断一个没有处于休眠或者等待状态的线程,是没有任何左右的。
- public final void join() throw InterruptedException
线程加入:join在哪个线程当中调用,那么就等到这个线程执行完代码
- yield();
线程礼让:yield是对调度器的一个建议,但是调度器可以忽略这个建议
- public final void setDaemon(boolean on)
后台线程(守护线程):将该线程标记为守护线程(后台线程),如果当前线程全部为守护线程时,JVM退出;(该方法必须在启动线程前调用)
- public final void setPriority(int newPriority)
Thread类中的priority只是给JVM一个优先级的建议,并不在线程调度中起决定作用

两种实现线程的方式的比较

  • 第一种方式受限于java的单重继承
//无法继承两个类
class MyThread extends A,Thraed{
}
  • 第二种方式不会受限于单重线程,而且便于多线程共享数据
/*
创建线程的另一种方法是声明实现Runable接口的类。然后实现run方法
 */
public class ThreadControlDemo3 implements Runnable{
    @Override
    public void run() {

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值