多线程
文章平均质量分 52
喜码拉雅
追求卓越,成功自然到来。
展开
-
服务端自我保护之超时处理
该文章适用于比较重的操作的服务端开发人员。我们经常会遇到远程调用超时的情况,一般这种情况客户端会有一个超时时间,超过该时间,那客户端抛异常,客户端可以进行重试等操作,那此时此刻,服务端呢?最近遇到了一个线上问题,我的一个服务是文件处理,所有的接口都会进行文件转换相关的操作(word转pdf、word转html等操作),文件操作是比较重的操作,遇到比较大的文件,服务可能要处理很长很长时间。某用户上传了一个不算大的excel文件,只有437.64KB,但是这个文件有一百多万行,这个文件请求到服务端,服务原创 2021-04-25 20:42:12 · 814 阅读 · 1 评论 -
volatile关键字
首先明确几个概念: 相对新值:一个线程更新了某共享变量的值之后,其他线程能够读取到这个更新后的值,那么这个值就被称为该变量的相对新值。 最新值:如果读取了这个共享变量的线程在使用这个共享变量的过程中其他线程无法更新该变量的值,那么该项成读取到的值被称为该变量的最新值。 volatile关键字用于修饰共享可变变量,即没有使用final关键字修饰的实例变量或静...原创 2018-06-14 09:55:34 · 116 阅读 · 0 评论 -
线程的生命周期状态
在Java语言中,一个线程从其重建、启动到终止可能会经历NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TREMINATED等状态。1.NEW一个刚被创建但还没启动(调用该线程的start()方法)的线程就处于该状态。2.RUNNABLE该状态包括两个子状态:READY以及RUNNING。READY表示该线程的start()方法已被调用,但是该线程此刻没有被线...原创 2018-07-03 16:22:18 · 545 阅读 · 0 评论 -
synchronized原理分析
在Java中,我们最常用的同步手段就是synchronized关键字了,下面我们来分析一下它的原理。我们来看一下下面的代码,这是一段很简单的自增代码: public void inc(){ i++; }经javac编译后: 0: getstatic #2 // Field i:I 3: iconst_1 ...原创 2018-07-06 13:13:13 · 124 阅读 · 0 评论