Java线程属性详解(Demo-Java基础)

你好我是辰兮,很高兴你能来阅读,本篇文章继续为大家讲解Java多线程之线程属性,下面有案例的截图和相关代码可以自行实践,相关的更多面试知识已经提前整理好文章可以阅读学习,分享获取新知,希望对Java初学者有帮助。



一、name属性

先创建一个线程

/**
*创建类继承Thread,重写run方法,在run方法中定义线程体
*/
public class MyThread extends Thread{
	public void run() {
		//定义线程体
	}
}
//创建线程
Thread t = new MyThread();

①设置线程的name属性

//通过线程对象调用setName方法设置线程名称
t.setName("线程名");

在这里插入图片描述
②在线程体中获取线程name属性

    //在实现Runnable接口的线程类的线程体:
    String name = Thread.currentThread().getName();
    
    //在继承Thread类的线程类的线程体:
    String name = this.getName();

在这里插入图片描述


二、线程优先级

线程是具有优先级的.优先级高的线程具有比优先级低的线程有更多的执行机会,而并不是优先级高的先执行优先级低的后执行。

线程的优先级一共有10级,最低级为1级,最高级为10级,默认5级。

    //获取线程优先级
    int p = t.getPriority();
    
    //设置线程优先级
    t.setPriority(int p);

在这里插入图片描述


三、守护线程

线程分类 作用
用户线程 具有独立业务流的线程
守护线程 为用户线程提供服务

守护线程特性:

  • 当所有用户线程都执行结束,即使守护线程线程体没有执行完也会停止;
  • 如果有任何一个用户线程没有执行结束,即使守护线程执行结束了也不会停止,进入等待状态,直到最后一个用户线程执行结束。 设置守护线程:

ps:打个比方,守护线程好比烧烤摊的老板,用户线程就是顾客,当顾客没吃完,就算老板到了下班的时间老板也要等待。

//判断当前线程是否为守护线程?
boolean b = t.isDaemon();
	
//设置守护线程
t.setDaemon(true);

在这里插入图片描述

守护线程又称为后台线程,精灵线程,比如,Java 的垃圾回收线程是守护线程,main 线程不是守护线程。其特征是前台线程全部死亡,守护线程自动死亡。


四、主线程

主方法本身也是一个独立的线程,线程名默认为main

主线程非守护线程。
在这里插入图片描述
ps:参考上篇文章的执行run()方法是在当前线程内执行,我们可以获取出其线程名称。当前线程名称为main.


上述截图代码请参考,自行复制操作实践

public class SellTickets {
    static int count = 100;
    static Runnable r = new Runnable() {
      @Override
      public void run() {
          while(count > 0) {
              count--;
              System.out.println(Thread.currentThread().getName() + "售出了 一张票,剩余" + count);
          }
      }
  };
    public static void main(String[] args) {
        Thread t1 = new Thread(r);
        Thread t2 = new Thread(r);
        Thread t3 = new Thread(r);
      }
}

The best investment is to invest in yourself

在这里插入图片描述

2020.05.30 记录辰兮的第71篇博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章