多线程
普通网友
这个作者很懒,什么都没留下…
展开
-
一文入魂,2万字带你彻底搞懂AQS及其组件的核心原理
前言JDK1.5以前只有synchronized同步锁,并且效率非常低,因此大神Doug Lea自己写了一套并发框架,这套框架的核心就在于AbstractQueuedSynchronizer类(即AQS),性能非常高,所以被引入JDK包中,即JUC。那么AQS是怎么实现的呢?本篇就是对AQS及其相关组件进行分析,了解其原理,并领略大神的优美而又精简的代码。AbstractQueuedSynchronizerAQS是JUC下最核心的类,没有之一,所以我们先来分析一下这个类的数据结构。.原创 2020-10-07 13:41:05 · 473 阅读 · 0 评论 -
深入理解Java虚拟机——类加载机制详解
类加载的时机加载阶段合适开始,《Java虚拟机规范》并没有强制约束,交由虚拟机自己实现。而初始化阶段,严格规定有且只有以下六种情况,如果类型没有进行过初始化,必须对类进行初始化:遇到以下字节码指令: new:实例化对象的时候 getstatic和putstatic,读取或设置一个类型的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)。 invokestatic:调用一个类型的静态方法的时候。 使用java.lang.reflect包对类型进行反射调用的时原创 2020-09-16 14:47:00 · 371 阅读 · 0 评论 -
再造轮子?有了synchronized为何还要提供Lock?
写在前面在Java中提供了synchronized关键字来保证只有一个线程能够访问同步代码块。既然已经提供了synchronized关键字,那为何在Java的SDK包中,还会提供Lock接口呢?这是不是重复造轮子,多此一举呢?今天,我们就一起来探讨下这个问题。再造轮子?既然JVM中提供了synchronized关键字来保证只有一个线程能够访问同步代码块,为何还要提供Lock接口呢?这是在重复造轮子吗?Java的设计者们为何要这样做呢?让我们一起带着疑问往下看。为何提供Lock接口?很原创 2020-09-16 14:46:51 · 340 阅读 · 2 评论 -
并发编程 | 线程池从入门到成神!
一、为什么要用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影响,同时进行,这样,充分利用了cpu资源。二、java中简单的实现多线程方式继承Thread类,实现run方法classMyTreadextendsThread{publicvoidrun(){System.out.println(Thread.currentThread().getName());}}实现Runable接口,实现run方法cl...原创 2020-08-29 23:11:35 · 440 阅读 · 0 评论 -
字节Java全能手册火了!多线程/网络/性能调优/框架啥都有
前言在这个技术不断更新的年代,跟不上时代变化的速度就会被刷掉,特别是咱们程序员这一群体,技术不断更新的同时也要同时进步,不然长江后浪推前浪,前浪......一个程序员从一个什么都不懂的小白在学到有一定的Java基础的时候肯定是要学习更多的技术充实自己,甚至还要往架构师方向靠。但是一个优秀的架构师必须要有扎实的编程功底和丰富的理论知识,不光要能完成架构设计,更要有能力将设计转换为实际的产品。不会写代码、纸上谈兵的“架构师”设计出来的“架构”是靠不住的。现在大论的微服务与分布式(其实可以说是一个东西原创 2020-08-25 22:26:50 · 1030 阅读 · 5 评论 -
先睹为快!Github上一些超火的Java并发编程神仙笔记
并发编程谈到并发编程,可能很多人都有过经验,甚至比我了解的更多。那么并发与并行的区别又是什么?并发编程是编程中的核心问题,实践中,当人们希望利用计算机处理一些现实世界问题,以及希望同时处理多个问题的时候,并发也就出现了。在需要对同一共享资源进行操作,多个事务之间存在关联,人们把这种看起来多个事务同时运行的特性称为并发性。有个经常容易跟并发混肴的概念叫并行,其实真正懂了之后理解并不困难,可以把并行看过是并发实现中某个局部可以引入的运行设施;在讨论并发时,我们一般不需要假设这个运行或者调度设施究竟是原创 2020-08-21 17:17:32 · 687 阅读 · 0 评论 -
我佛了!Java开发者福音:并发编程源码剖析+高并发系统搭建
多线程和高并发的关系和区别“高并发和多线程”总是被人一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程多线程多线程是Java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率,Java提供了这种多线程的机制,以增强数据处理效率。多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进原创 2020-08-16 16:43:27 · 453 阅读 · 0 评论 -
电商平台每逢节日是如何做到几亿并发的?
高可用设计是互联网系统架构的基础之一,以天猫双十二交易数据为例,支付宝峰值支付次数超过 8 万笔。大家设想一下,如果这个时候系统出现不可用的情况,那后果将不可想象。而解决这个问题的根本,就是服务层的高可用。什么是服务层众所周知,服务层主要用来处理网站业务逻辑,是大型业务网站的核心。比如下面三个业务系统就是典型的服务层,提供基础服务功能的聚合。 用户中心:主要负责用户注册、登录、获取用户信息功能; 交易中心:主要包括正向订单生成、逆向订单、查询、金额计算等功能; 支付中心:主原创 2020-08-16 16:39:25 · 635 阅读 · 0 评论 -
高并发与多线程关系与区别
一、什么是高并发 高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求、数据库的操作等。二、高并发的处理指标高并发相关常用的一些指标有:响应时间、吞吐量、每秒查询率QPS、并发用户数1、响应时间(Response Time)响应时间:系统对请求做出响应的时间。例如系统处...原创 2020-08-15 23:19:51 · 922 阅读 · 0 评论 -
单核CPU, 1G内存,究竟能不能做JVM调优?
转至架构师进阶之路最近,技术群里有人问了一个有趣的技术话题:单核CPU, 1G内存的超低配机器,怎么做JVM调优?这实际上是两个问题。单核CPU的超低配机器,怎么充分利用CPU?单核CPU, 1G内存的超低配机器,怎么做JVM调优?怎么充分利用CPU?这个问题不能一概而论,要结合具体场景。对于IO密集型和CPU密集型的应用调优的方法会截然不同。IO密集型:有频繁外部设备访问的应用,如磁盘访问和网络访问等。由于CPU性能相对硬盘读写和网络访问要好很多,系统执行任务时,大部分的情况.原创 2020-07-30 14:57:01 · 768 阅读 · 0 评论 -
线程池的execute方法和submit方法区别在哪?
文章内容很聚焦,但干货十足。不注意的话你可能会落入陷阱。concurrent包里的ExecutorService,是一个接口,继承的是Executor,而Executor里只有一个方法。public interface Executor { void execute(Runnable command);}这就是execute方法,接受一个runnable,然后返回为空。也就是说,它接受任务之后,就静悄悄异步去运行了。我们再来看submit方法。区别就是submit方法,会返回一个原创 2020-07-30 14:32:31 · 487 阅读 · 0 评论 -
面试官:你熟悉多线程嘛?线程跟进程有什么区别?
这篇文章跟大家聊聊线程,讲到线程,⼜不得不提进程了~进程我们估计是很了解的了,在windows下打开任务管理器,可以发现我们在操作系统上运⾏的程序都是进程。什么是叫一个进程? 什么叫一个线程?进程:做一个简单的解释,你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这是一个程序,这个程序是一个静态的概念,它被扔在硬盘上也没人理他,但是当你双击它,弹出一个界面输入账号密码登录进去了,OK,这个时候叫做一个进程。进程相对于程序来说它是一个动态的概念线程:作为一个进程里面最小的执行单元它就叫一个原创 2020-07-23 15:02:35 · 640 阅读 · 6 评论 -
线程的概述、状态、创建线程的方式、线程常用的方法
一、线程的概述进程:正在运行的程序,负责了这个程序的内存空间分配,代表了内存中的执行区域。 线程:就是在一个进程中负责一个执行路径。 多线程:就是在一个进程中多个执行路径同时执行。1.1多线程的好处:解决了一个进程里面可以同时运行多个任务(执行路径)。 提供资源的利用率,而不是提供效率。1.2多线程的弊端:降低了一个进程里面的线程的执行频率。 对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。 公有变量的同时读或写。当多个线程需要对公有变量进行写操作时原创 2020-07-22 14:52:28 · 355 阅读 · 0 评论 -
常见的Java性能问题,手把手教你定位!
概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命令是我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。to原创 2020-07-14 14:18:02 · 568 阅读 · 1 评论 -
吃透腾讯T8纯手打465页Java性能调优,3个月后成功上岸美团
关于性能调优,我先来说说的我的感受。Java 性能调优不像是学一门编程语言,无法通过直线式的思维来掌握和应用,它对于工程师的技术广度和深度都有着较高的要求。显然,性能调优不是一件容易的事。但有没有什么方法能把这件事情做好呢?接下来跟你分享几点我的心得。1.扎实的计算机基础 2.习惯透过源码了解技术本质 3.善于追问和总结在这个专栏里,我将从实战出发,精选高频性能问题,透过Java底层源码,提炼出优化思路和它背后的实现原理,最后形成-套“学完就能用的调优方法论”。这也是很多一线大厂对于高级工程师原创 2020-07-09 14:15:29 · 471 阅读 · 0 评论 -
分享一份GitHub上120K Stars国内第一的Java多线程PDF
随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。本书采用Java (JDK1.8) 语言和UML为描述语言,并结合作者多年工作经历的相关实战案例,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的事项以及各个模式的可原创 2020-07-08 14:56:43 · 1253 阅读 · 0 评论