Fork me on GitHub
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 30 下一页
摘要: 在 Java 中,让线程休眠的方法有很多,这些方法大致可以分为两类,一类是设置时间,在一段时间后自动唤醒,而另一个类是提供了一对休眠和唤醒的方法,在线程休眠之后,可以在任意时间对线程进行唤醒。 PS:休眠是指让某个线程暂停执行(进入等待状态),唤醒指的是让某个暂停的线程继续执行。 线程休眠的方法有以 阅读全文
posted @ 2022-04-18 08:05 磊哥|www.javacn.site 阅读(987) 评论(0) 推荐(1) 编辑
摘要: 想了解 synchronized 是如何运行的?就要先搞清楚 synchronized 是如何实现? synchronized 同步锁是通过 JVM 内置的 Monitor 监视器实现的,而监视器又是依赖操作系统的互斥锁 Mutex 实现的,那接下来我们先来了解一下监视器。 监视器 监视器是一个概念 阅读全文
posted @ 2022-04-14 08:40 磊哥|www.javacn.site 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 在 Java 语言中,保证线程安全性的主要手段是加锁,而 Java 中的锁主要有两种:synchronized 和 Lock,我们今天重点来看一下 synchronized 的几种用法。 用法简介 使用 synchronized 无需手动执行加锁和释放锁的操作,我们只需要声明 synchronize 阅读全文
posted @ 2022-04-13 14:49 磊哥|www.javacn.site 阅读(3120) 评论(0) 推荐(0) 编辑
摘要: 线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。在 Java 中,解决线程安全问题有以下 3 种手段: 使用线程安全类,比如 AtomicInteger。 加锁排队执行 使用 synchronize 阅读全文
posted @ 2022-04-07 08:26 磊哥|www.javacn.site 阅读(661) 评论(0) 推荐(1) 编辑
摘要: 线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。 举个例子来说,比如银行只有张三一个人来办理业务,这种情况在程序中就叫做单线程执行,而单线程执行是没有问题的,也就是线程安全的。但突然有一天来了很多人 阅读全文
posted @ 2022-04-06 21:30 磊哥|www.javacn.site 阅读(488) 评论(0) 推荐(1) 编辑
摘要: 很多场景下,我们需要等待线程池的所有任务都执行完,然后再进行下一步操作。对于线程 Thread 来说,很好实现,加一个 join 方法就解决了,然而对于线程池的判断就比较麻烦了。 我们本文提供 4 种判断线程池任务是否执行完的方法: 使用 isTerminated 方法判断。 使用 getCompl 阅读全文
posted @ 2022-03-30 09:13 磊哥|www.javacn.site 阅读(3473) 评论(0) 推荐(1) 编辑
摘要: 在 Java 语言中,有两个线程池可以执行定时任务:ScheduledThreadPool 和 SingleThreadScheduledExecutor,其中 SingleThreadScheduledExecutor 可以看做是 ScheduledThreadPool 的单线程版本,它的用法和 阅读全文
posted @ 2022-03-28 10:44 磊哥|www.javacn.site 阅读(2275) 评论(0) 推荐(1) 编辑
摘要: 在 Java 中,线程池的状态和线程的状态是完全不同的,线程有 6 种状态:NEW:初始化状态、RUNNABLE:可运行/运行状态、BLOCKED:阻塞状态、WAITING:无时限等待状态、TIMED_WAITING:有时限等待状态和 TERMINATED:终止状态。而线程池的状态有以下 5 种: 阅读全文
posted @ 2022-03-23 11:07 磊哥|www.javacn.site 阅读(372) 评论(0) 推荐(0) 编辑
摘要: Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一个是 Feign Client。之前的文章咱们介绍过 Rest Template 的调用方式,主要是通过 Ribbon(负载均衡) + RestTemplate 实现 HTTP 服务调用的,请求的核心代码是这样的: @ 阅读全文
posted @ 2022-03-23 08:57 磊哥|www.javacn.site 阅读(1574) 评论(0) 推荐(0) 编辑
摘要: 在 Java 语言中,并发编程都是依靠线程池完成的,而线程池的创建方式又有很多,但从大的分类来说,线程池的创建总共分为两大类:手动方式使用 ThreadPoolExecutor 创建线程池和使用 Executors 执行器自动创建线程池。 那究竟要使用哪种方式来创建线程池呢?我们今天就来详细的聊一聊 阅读全文
posted @ 2022-03-21 09:27 磊哥|www.javacn.site 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 在 Java 语言中,线程分为两类:用户线程和守护线程,默认情况下我们创建的线程或线程池都是用户线程,所以用户线程也被称之为普通线程。 想要查看线程到底是用户线程还是守护线程,可以通过 Thread.isDaemon() 方法来判断,如果返回的结果是 true 则为守护线程,反之则为用户线程。 我们 阅读全文
posted @ 2022-03-16 11:25 磊哥|www.javacn.site 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 聊到线程池就一定会聊到线程池的执行流程,也就是当有一个任务进入线程池之后,线程池是如何执行的?我们今天就来聊聊这个话题。线程池是如何执行的?线程池的拒绝策略有哪些? 线程池执行流程 想要真正的了解线程池的执行流程,就得先从线程池的执行方法 execute() 说起,execute() 实现源码如下: 阅读全文
posted @ 2022-03-15 09:28 磊哥|www.javacn.site 阅读(1344) 评论(0) 推荐(0) 编辑
摘要: 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客 阅读全文
posted @ 2022-03-14 08:49 磊哥|www.javacn.site 阅读(877) 评论(0) 推荐(1) 编辑
摘要: 在 Nacos 中,服务调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负载均衡器,通过 Ribbon 可以获取服务实例的具体信息(IP 和端口号),之后再通过 RestTe 阅读全文
posted @ 2022-03-10 10:52 磊哥|www.javacn.site 阅读(1504) 评论(0) 推荐(0) 编辑
摘要: 所谓的线程池的 7 大参数是指,在使用 ThreadPoolExecutor 创建线程池时所设置的 7 个参数,如以下源码所示: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, 阅读全文
posted @ 2022-03-09 10:30 磊哥|www.javacn.site 阅读(5306) 评论(0) 推荐(1) 编辑
摘要: 在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景,总体来说线程池的创建可以分为以下两类: 通过 ThreadPoolExecutor 手动创建线程池。 通过 Executors 执行器自动创建线程池。 而以上两类创建线 阅读全文
posted @ 2022-03-07 10:36 磊哥|www.javacn.site 阅读(2640) 评论(0) 推荐(0) 编辑
摘要: 在 Java 语言中,提高程序的执行效率有两种实现方法,一个是使用线程、另一个是使用线程池。而在生产环境下,我们通常会采用后者。为什么会这样呢?今天我们就来聊聊线程池的优点,以及池化技术及其应用。 1.池化技术 池化技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。 池化技术的优点 阅读全文
posted @ 2022-03-02 09:00 磊哥|www.javacn.site 阅读(1775) 评论(0) 推荐(1) 编辑
摘要: 在 Java 中停止线程的实现方法有以下 3 种: 自定义中断标识符,停止线程。 使用线程中断方法 interrupt 停止线程。 使用 stop 停止线程。 其中 stop 方法为 @Deprecated 修饰的过期方法,也就是不推荐使用的过期方法,因为 stop 方法会直接停止线程,这样就没有给 阅读全文
posted @ 2022-03-01 08:25 磊哥|www.javacn.site 阅读(1373) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制。有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者提供健康的服务实例,最终保证了业务系统能够正常的执行。 两种健康检查机制 Nacos 中提供了两种健 阅读全文
posted @ 2022-02-28 11:04 磊哥|www.javacn.site 阅读(2491) 评论(0) 推荐(1) 编辑
摘要: sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢 阅读全文
posted @ 2022-02-23 08:57 磊哥|www.javacn.site 阅读(1509) 评论(0) 推荐(0) 编辑
摘要: 在多线程编程中,wait 方法是让当前线程进入休眠状态,直到另一个线程调用了 notify 或 notifyAll 方法之后,才能继续恢复执行。而在 Java 中,wait 和 notify/notifyAll 有着一套自己的使用格式要求,也就是在使用 wait 和 notify(notifyAll 阅读全文
posted @ 2022-02-22 08:20 磊哥|www.javacn.site 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护阈值、服务路由类型、临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它。 1.命名空间 在 Nacos 中通过命名空间(Namespace)+ 分组(Group)+服务名(Name)可以定位到一个唯一的服务实例。 命名 阅读全文
posted @ 2022-02-21 08:29 磊哥|www.javacn.site 阅读(1514) 评论(0) 推荐(0) 编辑
摘要: 线程的生命周期指的是线程从创建到销毁的整个过程,通常情况下线程的生命周期有以下 5 种: 初始状态 可运行状态 运行状态 休眠状态 终止状态 它们的状态转换如下图所示: Java 线程生命周期 Java 线程的生命周期和上面说的生命周期是不同的,它有以下 6 种状态: NEW(初始化状态) RUNN 阅读全文
posted @ 2022-02-18 09:32 磊哥|www.javacn.site 阅读(1240) 评论(0) 推荐(1) 编辑
摘要: 前两天遇到了一个问题,Nacos 中的永久服务删除不了,折腾了一番,最后还是顺利解决了。以下是原因分析和解决方案,建议先收藏,以备不时之需。 临时实例和持久化实例是 Nacos 1.0.0 中新增了一个特性。临时实例和持久化实例最大的区别是健康检查的方式:临时实例使用客户端主动上报的健康检查模式,而 阅读全文
posted @ 2022-02-17 08:01 磊哥|www.javacn.site 阅读(4023) 评论(0) 推荐(2) 编辑
摘要: 初学线程时,总是将 run 方法和 start 方法搞混,虽然二者是完全不同的两个方法,但刚开始使用时很难分清,原因就是因为初次使用时效果貌似是一样的,如下代码所示: public static void main(String[] args) { // 创建线程一 Thread thread = 阅读全文
posted @ 2022-02-15 10:22 磊哥|www.javacn.site 阅读(350) 评论(0) 推荐(2) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 30 下一页