前两天看极客时间Java并发课程的时候,刷到一个概念:活锁。死锁,倒是不陌生,活锁却是第一次听到。在介绍活锁之前,我们先来复习一下死锁。下面的例子模拟一个转账业务,多线程环境,为了账户金额安全,对账户进行了加锁。1publicclassAccount{2publicAccount(intbalance,Stringcard){3this.balance=balance;4this.card=car
分类:
其他好文 时间:
2020-08-06 09:23:01
阅读次数:
52
这节讲一下多线程(Thread)技术。 在讲线程之前,先区分一下程序,进程,线程三者的区别,大体上说,一个程序可以分为多个进程,一个进程至少由一个线程去执行,它们是层层包含的关系。我们写的程序,就是一个进程,多个进程,以完成一个用户服务,或者完成一个大的界面展现,就组成一个程序,但在CPU层面,只有 ...
分类:
编程语言 时间:
2020-08-05 23:24:31
阅读次数:
104
前言进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间,同时共享进进程锁拥有的内存和其他资源。多线程的实现继承Thread类创建一
分类:
编程语言 时间:
2020-08-05 21:04:59
阅读次数:
104
前言 进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。 线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进 ...
分类:
编程语言 时间:
2020-08-05 14:29:03
阅读次数:
81
引言 都说 StringBuilder 在处理字符串拼接上效率要强于 String,但有时候我们的理解可能会存在一定的偏差。 最近我在测试数据导入效率的时候就发现我以前对 StringBuilder 的部分理解是错误的。后来我通过实践测试 + 找原理 的方式搞清楚了这块的逻辑。现在将过程分享给大家 ...
分类:
其他好文 时间:
2020-08-05 13:10:06
阅读次数:
70
一、线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。 程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 线程安全问题都是由全局变量及静态变量引起的。 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量 ...
分类:
编程语言 时间:
2020-08-05 10:31:44
阅读次数:
62
支持多应用 使用多线程支持多个请求同时访问同一个页面,下面通过建立Context类来支持多个请求同时访问多个应用 设计的思想大概是 建立一个Context类,这个类具有两个字段,一个是应用的路径映射,例如ROOT路径映射到/,等等,在bootstrap中建立一个映射用于保存path和context。 ...
分类:
其他好文 时间:
2020-08-05 00:03:48
阅读次数:
52
最近看到一个前辈留下的shell,发现竟然是shell多线程,便研究了下。也许你会有疑问,Shell这么简单的脚本语言有多线程这一说吗?答案是有的。只不过它实现起来稍微有点难理解罢了,因为它借助了命名管道实现。所谓多线程就是原本由一个进程完成的事情现在由多个线程去完成。假如一个进程需要10小时完成的事情,现在分配10个线程,给他们分工,然后同时去做这件事情,最终可能就需要1小时。文件描述符:文件描
分类:
编程语言 时间:
2020-08-04 18:23:58
阅读次数:
101
Java中的HashMap、LinkedHashMap的解决散列冲突策略都是链表法(数据规模大),但多线程中的ThreadLocalMap则是用的开放寻址法(因为规模数据小、装载因子不高)。 何为一个工业级的散列表?工业级的散列表应该具有哪些特性? 1.支持快速的查询、插入、删除操作; 2.内存占用 ...
分类:
其他好文 时间:
2020-08-04 16:49:26
阅读次数:
80