进程:进程是程序的一次执行,进程是一个程序及其数据在处理机上顺序执行时所发生的活动,进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
线程:线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径)。是程序使用CPU的最基本单位。
sleep: sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
wait:线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
并发是多个任务交替使用CPU,同一时刻还是只有一个任务在跑,并行是多个任务同时跑。
您是对的。Java并发(Java Concurrency)是Java编程语言的一个重要部分,它允许程序同时执行多个任务,也称为线程。Java.util.concurrent包是Java SE库的一部分,它为Java开发者提供了多种并发实用工具。
这个包中的一些主要组件包括:
- 线程池(Thread Pools):允许您创建并管理一个线程池,以执行并发任务。
- 锁(Locks):提供了一种替代内置同步机制的机制,允许开发人员对代码块进行精细粒度的控制。
- 原子变量(Atomic Variables):提供了一种在多线程环境中进行原子操作的方式。
- 并发集合(Concurrent Collections):提供了一些并发集合类,例如ConcurrentHashMap和CopyOnWriteArrayList,这些类在多线程环境中表现良好。
- 工作窃取(Work-Stealing):允许线程在完成其任务后从其他线程中“窃取”工作。
- 并发工具(Concurrent Utilities):提供了诸如计时器、信号量等工具。
Java.util.concurrent包使得开发人员能够更轻松地编写并发程序,同时减少了多线程环境中的一些常见问题,如死锁和竞态条件。除了上述提到的组件,Java.util.concurrent包还提供了许多其他有用的并发工具。例如: - 倒计时门闩(CountDownLatch):允许一个或多个线程等待,直到门闩的计数器达到零。
- 循环栅栏(CyclicBarrier):允许一组线程互相等待,直到所有线程都达到某个公共屏障点。
- Semaphore(信号量):提供了一种控制对有限资源访问的方法。
- SynchronousQueue(同步队列):一个不存储元素的阻塞队列。每个插入操作必须等待一个相应的删除操作,反之亦然。
通过使用这些工具,您可以更好地控制并发程序的执行流程,并减少并发问题,如死锁和竞态条件。这些工具的使用可以简化多线程编程,并提高程序的性能和可靠性。
在编写并发程序时,重要的是要注意线程安全和正确使用同步机制。Java.util.concurrent包提供了一些同步工具,如锁和原子变量,可以帮助您实现线程安全。此外,您还应该了解并发编程中的常见问题,并采取适当的预防措施,以确保程序的正确性和可靠性。
总之,Java.util.concurrent包是Java编程语言中一个非常有用的工具包,可以帮助您更好地处理线程和并发编程问题。通过使用这个包中的工具,您可以编写更高效、更可靠的并发程序。