首页 > 其他分享 >day21 线程终止与休眠

day21 线程终止与休眠

时间:2022-10-26 22:56:49浏览次数:53  
标签:Thread void day21 System 休眠 线程 new public

线程停止

  1. 让线程正常停止 利用循环不能死循环

  2. 使用标志位 设置标志位

  3. 不用stop函数和destroy

     1  public class TestStop implements Runnable{
     2  ​
     3      //1. 设置一个标志位
     4      private boolean flag = true;
     5      @Override
     6      public void run() {
     7          int i = 0;
     8          while (flag){
     9              System.out.println("run....thread "+i++);
    10          }
    11      }
    12      //2. 设置一个公开的方法停止线程,转换标志位
    13      public void stop(){
    14          this.flag=false;
    15      }
    16  ​
    17      public static void main(String[] args) {
    18          TestStop testStop = new TestStop();
    19          new Thread(testStop).start();
    20          for (int i = 0; i < 1000; i++) {
    21              if(i==900){
    22                  //调用stop方法切换标志位,让线程停止
    23                  testStop.stop();
    24              }
    25          }
    26      }
    27  }

     

线程休眠

  1. 模拟网络时延

 
 1 //模拟网络延迟
 2  public class TestSleep implements Runnable{
 3      //票数
 4      private int ticketNums =10;
 5      @Override
 6      public void run() {
 7  ​
 8          while (true){
 9              if (ticketNums<=0){
10                  break;
11              }
12              //模拟延时
13              try {
14                  Thread.sleep(200);
15              } catch (InterruptedException e) {
16                  e.printStackTrace();
17              }
18              System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"张票");
19          }
20      }
21  ​
22      public static void main(String[] args) {
23          TestSleep ticket = new TestSleep();
24          new Thread(ticket,"gugu").start();
25          new Thread(ticket,"zizi").start();
26          new Thread(ticket,"haohao").start();
27  ​
28      }
29  }

 

  1. 模拟倒计时

 1  // 模拟倒计时
 2  public class TestSleep2 {
 3      public static void main(String[] args) {
 4  ​
 5          try {
 6              tens();
 7          } catch (InterruptedException e) {
 8              e.printStackTrace();
 9          }
10          //打印当前系统时间
11          Date startTime = new Date(System.currentTimeMillis());//获取系统当前时间
12          while(true){
13              try {
14                  Thread.sleep(1000);
15                  System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));
16                  startTime = new Date(System.currentTimeMillis());//更新时间
17              } catch (InterruptedException e) {
18                  e.printStackTrace();
19              }
20  ​
21          }
22  ​
23      }
24      public static void tens() throws InterruptedException {
25          int num =10;
26          while (true){
27              Thread.sleep(1000);
28              System.out.println(num--);
29              if (num<=0){
30                  break;
31              }
32          }
33      }
34  }

 

 

标签:Thread,void,day21,System,休眠,线程,new,public
From: https://www.cnblogs.com/GUGUZIZI/p/16830464.html

相关文章

  • Java基础__学习笔记__线程
    =-=b又让我想起了以前操作系统的线程 --进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程--一个线程只可以属于一个进程,但一个进程能包含多个线程-......
  • javascript编程单线程之异步模式Asynchronous
    异步模式Asynchronous不会等待这个任务结束才开始执行下一个任务,开启之后立即执行下一个任务,后续逻辑一般会通过回调函数的方式定义,异步模式对js非常重要,没有异步任务单线......
  • day19 -线程2
    线程使用callable创建线程好处:可以定义返回值可以抛出异常同样定义下载器 1classWebDownloader{2//下载方法3publicvoiddownload......
  • javascript编程单线程之异步模式Asynchronous
    异步模式Asynchronous不会等待这个任务结束才开始执行下一个任务,开启之后立即执行下一个任务,后续逻辑一般会通过回调函数的方式定义,异步模式对js非常重要,没有异步任务单......
  • python线程
    1、概念cpu执行程序的最小单位,从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。Python可以运行多线程,但和单核CPU多进程一样,在给定时刻......
  • Java查询服务器(windows + linux)和系统各个指标数据 cpu、内存、硬盘、线程、请求错
    importjava.io.BufferedReader;importjava.io.File;importjava.io.IOException;importjava.io.InputStreamReader;importjava.lang.management.ManagementFactory......
  • 第二十章 多线程
    多线程本章将介绍Python中的多线程编程。多线程一直是Python学习中的重点和难点,需要反复练习和研究。1.线程和进程在学习多线程的使用之前,需要先了解线程、进程的概念......
  • MySQL基础篇--全局缓存和线程缓存
    MySQL全局缓存key_buffer_size决定索引处理的速度,尤其是索引读的速度。默认值是16M,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例......
  • 【Java】创建两个分线程,其中一个线程遍历100以内的偶数,另一个线程遍历100以内的奇数
    方式一:写两个类,run方法分别实现classMyThread1extendsThread{@Overridepublicvoidrun(){for(inti=0;i<100;i++){if(i%......
  • Python当中的线程模块threading【多测师】
    在Python语言中,对线程的操作使使用的是threading,下面首先通过一个案例来测试进程和线程的访问速度,首先见测试代码:#!/usr/bin/envpython#-*-coding:utf-8-*-importreque......