首页 > 其他分享 >线程状态

线程状态

时间:2024-08-14 10:54:05浏览次数:8  
标签:状态 Thread System SimpleDateFormat 线程 import new

线程状态

阻塞状态

import lombok.SneakyThrows;

import java.text.SimpleDateFormat;

public class T {
    @SneakyThrows
    public static void main(String[] args) {

        new Thread(() -> {
            synchronized (T.class) {
                try {
                    Thread.sleep(6000);
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "Locked");
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }, "线程1").start();

        new Thread(() -> {
            synchronized (T.class) {/*new Object(),不同锁,不阻塞线程2争抢时间片*/
                try {
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "Locked");
                } catch (Exception ex) {

                }
            }
        }, "线程2").start();
    }

}

等待

import lombok.SneakyThrows;

import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;

public class T {
    @SneakyThrows
    public static void main(String[] args) {
        Object o = new Object();
        new Thread(() -> {
            synchronized (o) {
                try {
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "=》5s后才能继续执行");
                    o.wait();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }, "线程1").start();

        new Thread(() -> {
            synchronized (o) {
                try {
                    TimeUnit.SECONDS.sleep(5);
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "唤醒");
                    o.notify();//注释此行,永久Waiting
                } catch (Exception ex) {

                }
            }
        }, "线程2").start();
    }
}

标签:状态,Thread,System,SimpleDateFormat,线程,import,new
From: https://www.cnblogs.com/goodluckxiaotuanzi/p/18358447

相关文章

  • SpringBoot 整合线程池
    分为三步启动类加@EnableAsync注解在方法上加@Async注解创建线程池配置类1.启动类加@EnableAsync注解@SpringBootApplication@EnableAsyncpublicclassFacadeH5Application{publicstaticvoidmain(String[]args){SpringApplication.run(Fac......
  • Android 10.0 SystemUI下拉状态栏QSTileView去掉着色效果显示彩色图标功能实现
    1.前言在10.0的系统rom定制化开发中,在关于SystemUI的下拉状态栏中QSTileView的背景颜色设置过程中,在由于系统原生有着色效果,导致现在某些彩色背景显示不是很清楚效果不好,所以需要去掉QSTileView的默认着色背景显示原生的彩色背景,接下来就来实现相关功能如图: 2.SystemUI......
  • 在K8S中,说⼀下Pod状态有哪些?
    在Kubernetes(K8S)中,Pod的状态反映了Pod及其内部容器的运行情况。以下是Pod可能出现的主要状态及其含义:Pending(等待)Pod已经被KubernetesAPI接受,但其容器镜像还未被拉取,或者Pod所需的节点资源(如CPU、内存等)还未满足。在这个状态中,Pod是不可调度的。Runni......
  • c++ 线程函数传递数据 namespace
     CMakeLists.txt cmake_minimum_required(VERSION3.10)#Settheprojectnameproject(GlobalMatrixExample)#FindEigenpackagefind_package(Eigen33.3REQUIRED)#Findpthreadpackagefind_package(ThreadsREQUIRED)#Addexecutableadd_executable(g......
  • c# 多线程环境下对共享资源访问的办法
    Monitor:定义:Monitor 是C#中最基本的同步机制,通过 Enter 和 Exit 方法来控制对共享资源的访问。它提供了排他锁的功能,确保在任何时刻只有一个线程可以访问共享资源。优点:简单易用,适合对临界区进行粗粒度的同步控制。缺点:只能实现排它锁,不能实现读写锁,性能相对较低。......
  • 主线程等待所有其他线程执行完毕,然后再继续执行主线程的逻辑,有以下几种方法可以实现:
    ##1.使用`Thread.join()``Thread.join()`方法会让主线程等待被调用线程执行完毕之后再继续执行。####示例代码:```javapublicclassMain{publicstaticvoidmain(String[]args){//创建3个线程Threadthread1=newThread(()->{Syste......
  • 进程线程(2)
    父子进程的关系子进程是父进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。        在fork之后,一般情况哪个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制。     区别:fork的返回值pid不同进程的创建创建之后,父子进程各自拥有4g独立的内存......
  • 【JVM】jvm 线程栈的一些设置 Thread Size
    1.概述下面是jvm线程栈的一些设置,简单的了解一下。2.XssXss和ThreadStackSize是等价的参数,用于设置Java线程栈的大小,单位为Kb。在命令行中,-Xss100K和-XX:ThreadStackSize=100是表示相同意义的参数。Xss参数的实现:Xss参数是通过设置ThreadStackSize数据......
  • Java线程池学习
    Java线程池学习一、线程池基础1定义2优点3基本组件二、Java线程池实现1Executor接口2ExecutorService接口3ThreadPoolExecutor类3.1创建线程池实例三、执行策略1直接提交策略(DirectSubmissionExecutor)2固定线程数策略(FixedThreadPool)3缓存线程池策略......
  • 黑马:常用响应状态码
    一、状态码大类状态码分类说明1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功——表示请求已经被成功接收,处理已完成3xx重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。4xx客户端......