首页 > 其他分享 >2022.10.15线程状态观测

2022.10.15线程状态观测

时间:2022-10-16 00:11:44浏览次数:35  
标签:15 Thread void start 线程 new 2022.10 public

线程状态观测

image-20221013093954645

线程优先级

image-20221014150514243

package com.fei.stata;

public class TestPriority extends Thread{
   public static void main(String[] args) {
       System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriority());
       Mypriority mypriority = new Mypriority();
       Thread t1 = new Thread(mypriority);
       Thread t2 = new Thread(mypriority);
       Thread t3 = new Thread(mypriority);
       Thread t4 = new Thread(mypriority);
       Thread t5 = new Thread(mypriority);
       Thread t6 = new Thread(mypriority);
       //先设置优先级在启动
       t1.start();
       t2.setPriority(5);
       t2.start();
       t3.setPriority(Thread.MAX_PRIORITY);
       t3.start();
       t4.setPriority(9);
       t4.start();
       t5.setPriority(4);
       t5.start();
       t6.setPriority(6);
       t6.start();
  }
}
class Mypriority implements Runnable{
   @Override
   public void run() {
       System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriority());
  }
}

守护(daemon)线程

  • 线程分为用户线程和守护线程

  • 虚拟机必须确保用户线程执行完毕

  • 虚拟机不用等待守护线程执行完毕

  • 如,后台记录操作日志,监控内存,垃圾回收等待

package com.fei.stata;

public class TestDaemon {
   public static void main(String[] args) {
       You you = new You();
       God god = new God();
       Thread thread = new Thread(god);
       thread.setDaemon(true);//默认是False表示是用户线程,正常的线程都是用户线程
       thread.start();//上帝守护线程启动
       new Thread(you).start();//you 你用户线程启动



  }
}
//上帝
class God implements Runnable{
   @Override
   public void run() {
       while (true){
           System.out.println("上帝保佑着你");
      }

  }
}
//你
class You implements Runnable{
   @Override
   public void run() {
       for (int i = 0; i < 36500; i++) {
           System.out.println("你活的很开心");
      }
       System.out.println("Goodbye");

  }
}

线程同步

image-20221014165019369

 

三大不安全案例

package com.fei.syn;

public class UnsafeBuyTicket {
   public static void main(String[] args) {
       BuyTicket buyTicket = new BuyTicket();
       new Thread(buyTicket,"晋儒").start();
       new Thread(buyTicket,"小宪").start();
       new Thread(buyTicket,"海朋").start();
  }
}
class BuyTicket implements Runnable{
   private int ticketNums = 10;
   boolean flag = true;//外部停止方式
   @Override
   public void run() {
       //买票
       while (flag){
           try {
               buy();
          } catch (InterruptedException e) {
               throw new RuntimeException(e);
          }
      }

  }
   //synchronized:同步方法,上锁只允许一个线程执行,其他线程阻塞
   private synchronized void buy() throws InterruptedException {
       //判断是否有票
       if (ticketNums<=0){
           flag = false;
           return;
      }
       Thread.sleep(100);
       //买票
       System.out.println(Thread.currentThread().getName()+"拿到"+ticketNums--);
  }
}
 

标签:15,Thread,void,start,线程,new,2022.10,public
From: https://www.cnblogs.com/Paytonfei/p/16795412.html

相关文章

  • 2022-10-15 react之umi之connect
    类函数写法:import{connect}from'umi';@connect(({data})=>({id:data.id}))组件函数写法:exportdefaultconnect(({data})=>({id:data......
  • 赵长鹏:我所遵循的 15 条处事原则
     1,基本价值观公平。不要占别人的便宜,也不要让别人占你的便宜。每个人都是主观的,并且稍微偏向于自己,你需要抵制这一点,并尽可能保持客观。 建立长期双赢的关系 避......
  • [2022.10.15]值传递 重载
    什么是值传递什么是引用传递为什么java是值传递http://t.csdn.cn/yS3Lj记住就行 调用方法:对象名.方法名(实参列表)Java支持两种调用方法的方式,根据方法是否返回值......
  • 高并发和多线程
    高并发是一种状态。如果大量的访问网络中的某个接口,就会出现大量的操作,如数据库操作,资源的请求,硬件的占用等。这就需要对接口进行优化,对sql语句进行优化,而多线程是处理高并......
  • 2022-10-15 react+react-draft-wysiwyg之富文本编译器安装过程
    npminstall--savereact-draft-wysiwygnpminstall--savedraft-jsnpminstall--savedraftjs-to-htmlnpminstall--savehtml-to-draftjs需要引入以下文......
  • 线程创建的方式
    说说线程的创建方式继承thread类,重写run()方法;实现Runnable接口,实现run()方法;实现callable接口,实现call方法;​ 使用Runnable接口和Callable接口的方式,区别在于前......
  • 47th2022/10/15 模拟赛总结34
    这次打得不太好AC了一题,但是T2疏忽了,0的情况忘掉,导致爆0然后后面两题并没有拿分,一大损失后来发现T3是可以拿一定分数的,思考了很多,尤其是DP,但是状态设出来又发现没用,不......
  • 10.15
    #include<stdio.h>#include<math.h>intmain(){ inta,i; unsignedlonglongsum=0; scanf("%d",&a);  for(i=1;;i++) { sum=sum+a%2*pow(10,i-1); a=a/2; i......
  • luoguP1505旅游(处理边权的树剖)
    /*luogu1505非常简单的处理边权的树剖题。在树上将一条边定向,把这条边的权值赋给这条边的出点树剖的时候不计算lca权值即可*/#include<bits/stdc......
  • 153-《大数据架构师》Flink Task 部署、初始化和启动详解_ev
                                                     ......