java多线程之:线程对象一些api

简介: 一:wait()方法,wait(long timeout)--->锁对象调用wait()方法,让当前线程小a进入等待状态,阻塞住,并让出当先线程拥有的锁。--->直到其他线程用锁对象调用notifyAll(),notify()将小a从wait虚拟队列中将阻塞的线程唤醒。

一:wait()方法,wait(long timeout)
--->锁对象调用wait()方法,让当前线程小a进入等待状态,阻塞住,并让出当先线程拥有的锁。
--->直到其他线程用锁对象调用notifyAll(),notify()将小a从wait虚拟队列中将阻塞的线程唤醒。重新争锁。
--->当别的线程对当前线程小a的对象调用interrupt()方法,则阻塞在wait虚拟队列的线程抛出InterruptedException异常,打算阻塞。
--->wait(longtimeout)进入锁对象虚拟队列的线程在阻塞timeout长时间后,此时已经让出锁,自己自动唤醒,再次争抢锁。

二:notifyAll()notify()方法
--->notifyAll()方法是将进入锁对象wait队列里所有阻塞的线程唤醒,重新争取锁。
--->notify()方法是将进入所对象wait虚拟队列里的阻塞的线程,拿出一个唤醒。

三:sleep(long time)
--->当前线程休眠time长时间,并不释放锁。

四:interrupt()
--->线程对象a.interrupt():将a线程的中断标示位设置成true。
--->线程对象a.isInterrupted():获取a线程的中断标示位的值。
--->Thread.interrupted():返回当前线程的中断标示位的值,同时不管值是什么在返回前将该值设置为false;
--->当线程的中断标示位为true的时候,线程如果在wait().sleep().join()中阻塞时候,或者即将进入的时候,都会抛出InterruptedException异常,从阻塞状态中唤醒,并将状态位设置为false.

五:join()方法
--->在线程x的线程体中用线程a.join()时,则线程x的线程体就会阻塞到a.join()这句代码这,等待a线程的线程体运行完毕,线程x的线程体的代码才从a.join()这句代码开始往后执行。
--->join(long time):代表线程x会阻塞time秒时间,线程a运行正常,time秒后线程x开始从阻塞位置向下执行代码
--->底层是wait(),不考虑锁。

六:yeid()方法
--->那个线程调用此方法,那个线程暂时一次让出CPU调度权。至于能否暂停,实际看cpu是否将时间片分给其他的线程。我主动放弃一次,至于cpu走不走,看cpu的。


七:isAlive()方法
--->线程a.isAlive(),如果线程a的线程体还未执行完,则返回true,如果线程a的线程还未启动,活着线程体已经运行完,则返回false
--->来判断一个线程是否还活着

八:getstate()方法
--->获取线程的运行状态
--->NEW 新建状态
--->RUNNABLE 运行(可运行)状态
--->BLOCKED     阻塞状态
--->TIMED_WAITING     休眠状态
--->WAITING     等待状态
--->TERMINATED     终止状态

相关文章
|
9天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
9天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
7天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
2天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
9 1
|
3天前
|
设计模式 运维 安全
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第15天】在Java开发中,多线程编程是提升应用程序性能和响应能力的关键手段。然而,它伴随着诸多挑战,尤其是在保证线程安全的同时如何避免性能瓶颈。本文将探讨Java并发编程的核心概念,包括同步机制、锁优化、线程池使用以及并发集合等,旨在为开发者提供实用的线程安全策略和性能优化技巧。通过实例分析和最佳实践的分享,我们的目标是帮助读者构建既高效又可靠的多线程应用。
|
4天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。
|
5天前
|
Java 程序员 编译器
Java中的线程同步与锁优化策略
【4月更文挑战第14天】在多线程编程中,线程同步是确保数据一致性和程序正确性的关键。Java提供了多种机制来实现线程同步,其中最常用的是synchronized关键字和Lock接口。本文将深入探讨Java中的线程同步问题,并分析如何通过锁优化策略提高程序性能。我们将首先介绍线程同步的基本概念,然后详细讨论synchronized和Lock的使用及优缺点,最后探讨一些锁优化技巧,如锁粗化、锁消除和读写锁等。
|
6天前
|
Java
探秘jstack:解决Java应用线程问题的利器
探秘jstack:解决Java应用线程问题的利器
14 1
探秘jstack:解决Java应用线程问题的利器
|
6天前
|
Java 调度 开发者
Java 21时代的标志:虚拟线程带来的并发编程新境界
Java 21时代的标志:虚拟线程带来的并发编程新境界
14 0
|
7天前
|
存储 Java 关系型数据库
掌握Java 8 Stream API的艺术:详解流式编程(一)
掌握Java 8 Stream API的艺术:详解流式编程
35 1