学习java多线程,这必须搞懂的这几个概念,很重要。

简介: 同步和异步同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。

同步和异步

同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。

举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。

异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继续执行下面的操作,不会像同步那样阻塞直要到方法完成才继续。

举个例子,你这次要取钱,数量较大,你直接电话或者APP预约银行说你要取多少万现金,这段时间银行会为你准备钱,而这与你都没什么关系,然后你只要按预定的时候去取就行了,对你于而言,你们是触发了一个异步动作而已。

并发和并行

并发,Concurrency,即一段时间内多个任务在执行,但不一定是同时在执行,它们可能是交替在运行,也有可能是串行运行的。

并行,Parallelism,这个就是多个任务在同时执行,可以理解为并发里面有一部分任务在并行执行。

单核CPU不会有并行操作,应为一个CPU一次只能执行一条指令,并行操作只存在于多核CPU中。

阻塞和非阻塞

阻塞,Blocking,如果一个线程占用了一个公共资源而没有释放对它的锁,另外别的一些线程想要继续执行就只能等它释放锁,这时候就造成阻塞了。

非阻塞,Non-Blocking,就是没有阻塞,线程可以自由运行,没有锁定公共资源,不相互阻塞运行。

相关文章
|
4天前
|
JavaScript Java 测试技术
基于Java的驾考自主学习预约平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的驾考自主学习预约平台的设计与实现(源码+lw+部署文档+讲解等)
15 0
|
4天前
|
存储 Java 数据库连接
java DDD 领域驱动设计思想的概念与实战
【4月更文挑战第19天】在Java开发中,领域驱动设计(Domain-Driven Design, DDD) 是一种软件设计方法论,强调以领域模型为中心的软件开发。这种方法通过丰富的领域模型来捕捉业务领域的复杂性,并通过软件满足核心业务需求。领域驱动设计不仅是一种技术策略,而且还是一种与业务专家紧密合作的思维方式
21 2
|
4天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。
|
5天前
|
JavaScript Java 测试技术
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 1
|
5天前
|
JavaScript Java 测试技术
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
20 0
|
5天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)
|
5天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
5天前
|
安全 Java 程序员
Java中的多线程并发编程实践
【4月更文挑战第18天】在现代软件开发中,为了提高程序性能和响应速度,经常需要利用多线程技术来实现并发执行。本文将深入探讨Java语言中的多线程机制,包括线程的创建、启动、同步以及线程池的使用等关键技术点。我们将通过具体代码实例,分析多线程编程的优势与挑战,并提出一系列优化策略来确保多线程环境下的程序稳定性和性能。
|
6天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
6天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
15 1