阿里巴巴资料职业发展
文章平均质量分 86
m0_74823507
这个作者很懒,什么都没留下…
展开
-
Python多线程的原理与实现
Python多线程原理与实战目的:(1)了解python线程执行原理(2)掌握多线程编程与线程同步(3)了解线程池的使用。原创 2023-10-26 13:27:58 · 289 阅读 · 0 评论 -
JVM运行的基本流程
ω?` )因为在很多学习的途中,如果你想去理解一个东西的本质的话,肯定得去挖掘知识的底部。在java中,JVM一直是java知识里面进阶阶段的重要部分。如果希望在java领域研究的更深入,那JVM则是如论如何也避开不了的话题所以今天我就给大家带了大概的JVM的一些介绍┗( ▔, ▔ )┛写完这篇后,不知道大家有什么收获没,如果有些专业术语不太了解,也没什么事只要大家能明白JVM的大概流程和功能,就很有收获了。也许有些东西不太正确,看出来的朋友可以提醒一下,我会改滴Thanks(?ω?原创 2023-10-26 00:08:41 · 92 阅读 · 0 评论 -
JVM堆内存详解
JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。原创 2023-10-18 03:09:15 · 126 阅读 · 1 评论 -
JVM之内存结构详解
对于开发人员来说,如果不了解Java的JVM,那真的是很难写得一手好代码,很难查得一手好bug。同时,JVM也是面试环节的中重灾区。今天开始,《JVM详解》系列开启,带大家深入了解JVM相关知识。我们不能为了面试而面试,但是学习会这些核心知识你必定会成为面试与工作中“最亮的一颗星”。本系列首发于微信公众号“程序新视界”。下面,开启我们的第一篇文章《JVM之内存结构详解》。学习也是要讲究方式方法的,本系列学习过程中会引导大家通过《》来学习,同时尽量采用图文方式来进行讲解。正所谓一图胜千言。原创 2023-10-18 00:44:20 · 74 阅读 · 1 评论 -
Java高级程序设计笔记 【第3章 多线程(二)】
同步就是指一个线程要等待另外一个线程执行完毕后才会继续执行的一种操作形式。虽然在一个程序中使用同步可以保证资源共享操作的正确性,但是过多同步或者同步控制不正确也会产生问题线程局部变量()是Java提供的一个线程安全类,通过使用类可以简化多线程编程时的并发访问,使用这个工具类可以很便捷地隔离多线程程序的竞争资源类的功能就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。原创 2023-10-12 00:23:27 · 46 阅读 · 0 评论 -
Java面试题之——线程池
再着一个服务中会运行着很多线程,比如 Tomcat 有自己的线程池、Dubbo 有自己的线程池、GC 也有自己的后台线程,我们引入的各种框架、中间件都有可能有自己的工作线程,这些线程都会占用 CPU 资源,所以通过此公式计算出来的误差一定很大。作为 JUC 包下的门面担当,线程池是名副其实的 JUC 一哥,不了解线程池,那说明你对 JUC 包其他工具也了解的不咋样吧,对 JUC 没深入研究过,那就是没掌握到 Java 的精髓,给面试官这样一个印象,那结果可想而知了。原创 2023-10-11 13:53:26 · 207 阅读 · 1 评论 -
Java面试汇总>>>初级工程师—面试1000题
线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。补充:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。优点:1)降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。2)提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。3)提高线程的可管理性。原创 2023-10-11 12:53:49 · 163 阅读 · 1 评论 -
java面试-GC垃圾回收机制
JVM 中的堆,一般分为三大部分:新生代、老年代、永久代。原创 2023-10-11 12:03:39 · 136 阅读 · 1 评论 -
Java线程面试题合集(含答案)
新的优先级较高的线程抢占(preempt)了其他线程。并发容器使用了与同步容器完全不同的加锁策略来提供更高的并发性和伸缩性,例如在ConcurrentHashMap中采用了一种粒度更细的加锁机制,可以称为分段锁,在这种锁机制下,允许任意数量的读线程并发地访问map,并且执行读操作的线程和写操作的线程也可以并发的访问map,同时允许一定数量的写操作线程并发地修改map,所以它可以在并发环境下实现更高的吞吐量。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。原创 2023-10-10 13:30:57 · 35 阅读 · 1 评论 -
Java多线程(超详细!)
进程是:一个应用程序(1个进程是一个软件)。线程是:一个进程中的执行场景/执行单元。一个进程可以启动多个线程。eg.对于java程序来说,当在DOS命令窗口中输入:java HelloWorld 回车之后。会先启动JVM,而JVM就是一个进程。JVM再启动一个主线程调用main方法(main方法就是主线程同时再启动一个垃圾回收线程负责看护,回收垃圾。最起码,现在的java程序中至少有两个线程并发,一个是 垃圾回收线程,一个是 执行main方法的主线程。t1线程执行t1的。原创 2023-10-10 12:45:15 · 352 阅读 · 1 评论 -
Java多线程——基本概念
程序:是一段静态的代码,是应用软件执行的蓝本进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程线程:是比进程更小的执行单位。进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念主线程:(每个Java程序都有一个默认的主线程)当JVM加载代码发现main方法之后,就会立即启动一个线程,这个线程称为主线程注意:主线程不一定是最后完成执行的线程,各个线程运行时完原创 2023-10-10 10:22:20 · 40 阅读 · 1 评论 -
Java 多线程编程基础(详细)
每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通,即使多进程可以提高硬件资源的利用率,但是进程的启动和销毁需要消耗大量的系统性能,从而导致程序的执行性能下降。如果并发的线程数量过多,并且每个线程都是执行一个时间很短的任务就结束,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要消耗时间,线程也属于宝贵的系统资源,因此,线程池就是为了能使线程可以复用而创建的。原创 2023-10-10 00:37:59 · 64 阅读 · 1 评论 -
Java 多线程的应用场景
多线程场景下需考虑线程安全的问题,避免多个线程争抢同一个资源导致业务逻辑出现错误。实现线程安全的方式有很多,这里使用Java Lock 接口中的方法实现。电影院新片首映,观影人数大量增加,为提高日营业额,线下售票窗口由原单窗口调整为3窗口,设计一段简单的程序模拟该售票过程。原创 2023-10-10 00:37:04 · 58 阅读 · 1 评论 -
java 多线程的三种写法
注:真正的多线程需要多核CPU同时处理多个线程,单核的是伪多线程(单核同一时间只能处理一个线程,但是线程之间切换很多,毫秒级,所以看起来像是在同时处理)提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,监控和调优。运行一个程序叫做一个线程,运行过程中时处理多个任务,这些任务叫做线程(比如同时播放画面和声音)降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。这个接口使用了线程池。原创 2023-10-10 00:36:10 · 252 阅读 · 1 评论 -
C# 多线程(菜鸟教程及爱整理)
线程池中的线程执行完指定的方法后并不会自动消除,而是以挂起状态返回线程池,如果应用程序再次向线程池发出请求,那么处以挂起状态的线程就会被激活并执行任务,而不会创建新线程,这就节约了很多开销。Semaphore也是线程通知的一种,上面的通知模式,在线程开启的数量很多的情况下,使用Reset()关闭时,如果不使用Sleep休眠一下,很有可能导致某些线程没有恢复的情况下,某一线程提前关闭,对于这种很难预测的情况,.NET提供了更高级的通知方式Semaphore,可以保证在超多线程时不会出现上述问题。原创 2023-10-09 23:21:24 · 895 阅读 · 0 评论 -
2023 Java 面试题精选40道,包含答案
Java中什么是重载?什么是覆盖?它们有什么区别?重载是指在同一个类中,方法名相同但参数类型、个数或顺序不同的情况下,编译器会根据参数列表的不同自动调用不同的方法。覆盖是指子类重写父类的同名方法,使得子类在调用该方法时执行子类的实现而不是父类的实现。区别在于重载是在同一个类中进行的,而覆盖是在不同的类之间进行的,且覆盖要求方法名、参数列表和返回类型都相同。Java中什么是多态?如何实现多态?多态是指同一个方法在不同的对象上产生不同的行为。实现多态的方式主要有两种,一种是继承,即子类原创 2023-10-09 23:02:05 · 77 阅读 · 0 评论 -
Java面试核心知识点汇总
直达链接内容包含->为什么会有Java内存模型?辨析JVM内存结构、Java内存模型、Java对象模型JVM内存结构Java对象模型Java内存模型重排序例子演示:什么是重排序重排序的好处重排序的3种情况可见性什么是可见性问题为什么会有可见性问题JMM主内存与本地内存的关系happens-before规则有哪些?volatile是什么什么时候适合用volatilevolatile的作用volatile与synchronized的关系。原创 2023-09-15 18:39:58 · 57 阅读 · 0 评论 -
Java面试八股文整理
String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象。java把String类声明的final类,不能有类。String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间。String类对象的创建字符串声明:String stringName;字符串创建:stringName = new String(字符串常量);或stringName = 字符串常量;String类构造方法1、原创 2023-09-15 18:16:47 · 52 阅读 · 0 评论