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     终止状态

相关文章
|
4月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
248 1
|
4月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
264 1
|
5月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
222 0
|
5月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
411 16
|
6月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
6月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
7月前
|
数据采集 监控 调度
干货分享“用 多线程 爬取数据”:单线程 + 协程的效率反超 3 倍,这才是 Python 异步的正确打开方式
在 Python 爬虫中,多线程因 GIL 和切换开销效率低下,而协程通过用户态调度实现高并发,大幅提升爬取效率。本文详解协程原理、实战对比多线程性能,并提供最佳实践,助你掌握异步爬虫核心技术。
|
7月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
399 83
|
7月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
332 0