Thread 类的基本用法

前言

当一个程序包含多个线程并且这些线程都启动时,这些线程则是并发执行的,如:

目录

前言

一、获取线程实例 

(一)继承Thread类

(二)实现Runnable接口

(三)匿名内部类

(1)创建Tread子类对象

(2)创建Runnable子类对象

(四)Lambda表达式

二、线程创建

三、线程中断

(一)interrupt

(二)标志位

(1)自定义标志位

(2)Thread 提供的标志位

四、线程等待

五、线程休眠

结语


一、获取线程实例 

 关于获取线程实例有6种方法,本文只讲解4种(基于Callable、基于线程池 本文暂时不讲解)

(一)继承Thread类

class 类名 extends Thread{
    @Override
    public void run() {
        //代码块
    }
}

(二)实现Runnable接口

class 类名 implements Runnable{
    @Override
    public void run() {
        //代码块
    }
}

(三)匿名内部类

(1)创建Tread子类对象

Thread t = new Thread(){
       @Override
       public void run() {
          //代码块
       }
};

(2)创建Runnable子类对象

Thread t = new Thread(new Runnable() {
      @Override
      public void run() {
           //执行
      }
});

(四)Lambda表达式

Thread t = new Thread(()->{
    //代码块
});

二、线程创建

线程创建又称为“线程启动”。

线程实例.start();

当start() 被执行,该线程就会启动,直到执行完毕。当线程在运行时,我们可以通过jconsole.exe文件进行查看线程运行情况:

未命名的用户创建的线程默认为Thread-0、 Thread-1、Thread-2....

三、线程中断

中断线程又名“终止线程”,是指让线程尽快结束,而不是打断线程后不让其继续进行执行。

(一)interrupt

线程实例.interrupt();

例如:

线程t 应该在执行while 死循环,但是因为main线程中出现了 t.interrupt();也就是main线程中打断了线程t 的sleep休眠操作,使其抛出异常,继续往下执行,main线程执行完代码块之后也执行完毕,此时线程t 继续循环执行。

(二)标志位

(1)自定义标志位

如图中,count 就是一个自定义标志位。

 对于多线程中的标志位,尽量使用volatile 修饰(后面的文章中会解释)。

也可以使用final修饰的常量来作为标志位,或者是不会被修改的变量。

(2)Thread 提供的标志位

Thread 提供了两个标志位,一个是成员方法,一个是静态方法。

1.Thread.currentThread().isInterrupted() (成员方法)-> 不清除标志位

 

2.Thread.interrupted() (静态方法)-> 清除标志位

在判断标志位时,会清除标志位

四、线程等待

线程对象.join();
public void join()等待线程结束
public void join(long m)等待线程结束,最多等m毫秒
public void join(long m,int n)等待线程结束,最多等m毫秒+n纳秒

有A 、B 两个线程,希望B线程先结束,A线程后结束,在A线程中调用B.join() 。

如果B线程还没执行完,A会进入阻塞状态直到B执行完成,A再从阻塞状态恢复回来,并且继续往后执行。

五、线程休眠

Thread.sleep(1000);

sleep() 当中的单位是毫秒,该方法是Thread 的静态方法。

结语

 这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y君的进化史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值