并发编程常用方法

简介: 并发编程常用方法

让步:Thread.yield()方法

与sleep方法的比较

当调用yield()时,对线程调度器的一种建议,它在声明:我已经执行完生命周期中最重要的部分了,此刻正是切换给其他线程的大好时机

但是这完全是选择性的,并非一定切换


yield()方法没有声明抛出任何异常


sleep()方法和yield()方法都是Thread类的静态方法,都会使当前处于运行状态的线程放弃CPU,把运行机会让给别的线程。两者的区别在于:


  • sleep()方法会给其他线程运行的机会,不考虑其他线程的优先级,因此会给较低优先级线程一个运行的机会;
  • yield()是在建议具有相同优先级的线程可以运行


当线程执行了sleep(long millis)方法,将转到阻塞状态,参数millis指定睡眠时间;当线程执行了yield()方法,将转到就绪状态。


sleep()方法比yield()方法具有更好的可移植性。不能依靠yield()方法来提高程序的并发性能。对于大多数程序员来说,yield()方法的唯一用途是在测试期间人为地提高程序的并发性能,以帮助发现一些隐藏的错误。


yield()方法是让步,调用后会给线程调度器一个暗示,可以让别的线程来使用cpu。但也仅仅是个暗示,没有办法保证这个暗示一定会被采纳,只是建议让拥有相同优先级的其他线程运行

休眠:Thread.sleep()

使任务终止执行给定的时间

sleep()方法声明抛出InterruptedException异常

在Java SE5中添加了更加显示的sleep()方法版本,直接通过TimeUtil来指定休眠的时间单位,sleep(long timeout)调用会线程处于阻塞状态

加入:Thread.join()

一个线程t在自己的run()内执行另外一个线程nt的nt.join()方法,t线程便会被挂起,nt线程结束后(nt.isAlive()为false)第一个线程t才会继续执行


可在调用join()时带上一个超时参数,如此即使当目标线程nt在设置的超时时间到期后还没有结束,join()方法也会返回


对其的调用可以被中断


目录
相关文章
|
21天前
|
安全 Java
并发编程之常见线程安全类以及一些示例的详细解析
并发编程之常见线程安全类以及一些示例的详细解析
13 0
|
1月前
|
Java
Java线程中的常用方法
Java线程中的常用方法
20 0
|
安全 Java 容器
高并发编程之线程间通信和集合的线程安全
高并发编程之线程间通信和集合的线程安全
24 1
|
3月前
|
存储 安全 Java
Java并发基础:CopyOnWriteArrayList全面解析
CopyOnWriteArrayList类的最大优点在于读取时无需加锁,非常适合读多写少的并发场景,由于其写操作通过复制底层数据来实现,从而保证了读取数据的一致性和高效性,此外,它简单易用,是快速实现线程安全列表的不错选择,CopyOnWriteArrayList在读操作占主导的场景下,能够提供出色的性能和稳定性。
Java并发基础:CopyOnWriteArrayList全面解析
|
安全 Java
Java多线程环境下使用的集合类
Java多线程环境下使用的集合类
154 0
Java多线程环境下使用的集合类
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全(三)
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全(三)
|
安全 容灾 Java
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全(一)
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全
《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全(一)
|
安全 Java
JUC并发编程学习(六)-集合类不安全
JUC并发编程学习(六)-集合类不安全
JUC并发编程学习(六)-集合类不安全
|
存储 安全 Java
java并发原理实战(5)--线程安全性问题和synchronized原理理解
java并发原理实战(5)--线程安全性问题和synchronized原理理解
java并发原理实战(5)--线程安全性问题和synchronized原理理解
|
安全
简述ArrayList线程安全的方法
ArrayList线程安全的方法
318 0