今年30岁,开始自学java,大概多长时间能出去找工作?会有公司要吗?

不建议,别相信鸡汤。除非你自己有兴趣钻研着玩,或者有益于你主业的发展,又或者你天赋极高,否则28岁就很难有面试机会了,更别说30。你跟培训机构出来的刚毕业的本科生相比,没有任何竞争优势,而他们的培训周期也就几个月,所以初级人才产量大,市场需求小。我自认为智商还行,天赋也不错,结果28岁转行失败。

我做了十年的java给你提点建议,想学好任何一门编程语言牵扯到的知识体系是相当庞大的,如果你之前对操作系统、数据结构和基本的算法完全没有基础,学习编程是比较困难的。

java入门会比C简单一点,因为不涉及到操作系统层面,不用关心底层的知识,跟硬件也无关,但这样学完一个基础可以说是什么都写不出来,即使能写也是写出来和毕业生差不多的代码,可能还不如,代码质量跟你的计算机知识体系和经验挂钩。如果日后想往技术深度方向发展,就必须学习底层的东西,否则永远都是拧螺丝的层面,做个几年到了瓶颈又得转行,到时候估计也转不动了。说到这里你可能会说不往技术方向发展往管理方向发展?我告诉你技术方面的管理对管理者的技术要求更高,达到一定技术深度是最基本的要求。

不要相信培训机构的速成,多数好一点的大学毕业生都不会选择去培训,培训只是教个基础,工作才是真正实践的东西,从去年开始互联网寒冬之后,现在java岗的招聘要求是越来越高了,先不说你有大批毕业生和你竞争,30以上找开发岗位是有一定难度的,除非你技术特别牛逼,否则企业宁愿要毕业生,因为成本低精力还旺盛,30岁在精力方面比不过毕业生的,还有学历也是一道门槛,现在互联网公司基本本科起步,好一点的需要985和211,必须是第一学历,不知道你学历上有没有优势。

如果你决定选择这条路那就必须辛苦沉淀几年好好学习并研究下深层的东西才有可能站稳脚跟,如果你不反感外包公司当我没说,想学东西的就往互联网公司发展,技术时刻在变,革新太快,今年用的东西明年可能就被淘汰,保持不断的学习才能站稳,希望你选择之前慎重考虑。

首先告诉你,我也是退伍回家来学java的,感觉很吃力。其次学这个无非是要想高薪就业,但是门槛也有点高,比如 学历啊 证书啊 然后就是有好企业入职……这些都需要一个过节点,自己要做好准备,并且怎么说呢?这个如果你准备搞开发或是其他的,要慎重权衡,考虑好吧


只有你努力 坚持 坚持 就们没有问题。我本人33岁转Java开发从hello world开始 。10年过去已经是加拿大一家公司CTO 但天天仍然写代码。为了第一份开发工作 把整本英文版java core,设计模式,算法 oracle oca 全部背下来 手机里也装了 没事就背诵 理解 。不理解的立马上机写代码。天天白板手写算法。没有工作就到处求人免费帮人做系统。激情燃烧的岁月。所谓岁数精力不够我个人觉得是伪命题。一个奔五的程序员仍然感觉比公司90后精力还充沛,算下来总结一下比起年轻人 最大优势就是学习能力和解决问题能力强。真心感觉成功人在于99%努力和120%的坚持。

如果是个人的兴趣爱好,可以去学。如果是奔着高薪去的不建议去学。原因有几点:

1. 年龄问题

30岁对于程序员来说已经不小了,在35岁左右基本跳槽与涨薪的机会也会变得很少。现在去报班学java,至少学个半年左右的时间,真正入职也就31岁了。在北上广学成后,找工作薪资大约也就在1w左右,其他一二线城市也就四五千的薪资水平。

2. 如今经济形势

从17年底开始,互联网的增长速度没有以前那么快,但是涌入互联网行业的人越来越多,换句话说企业招人没有以往那么多了。现在企业会提高面试的难度,半路出家的人基本没有基础知识,只能用java写写增删改查,对计算机领域的其他知识例如算法,数据结构一窍不通,会很难找到一份好的工作

3. 步入互联网圈子后发展也很困难

大部分培训机构出来的人只能在小公司打转,薪资其实并不高。入职后前期只是匮乏,会面临很多的困难,同事也要付出比别人更多的努力。

JAVA架构之线程池是怎样工作的?

通俗易懂的给你解释一下,池塘里有很多鱼,我们捞一条上来把玩一番,把玩一段时间后放回池塘里去。这就是线程池的工作原理,只不过这个池塘里放的不是鱼,是一个个线程对象,用到一个就拿一个,用完放回池塘内,而这个池塘在计算机内就是对应在软件的内存中了。

ThreadPool工作原理任务先去核心线程池,如果核心线程池没有则存入到Q中;Q满了去启新的线程(启新线程时会全局锁),不能启的话就返回错误需要多了解些,参数配置和使用结合。

java.util.concurrent包中我们能找到线程池的定义,其中ThreadPoolExecutor是我们线程池核心类,首先看看线程池类的主要参数有哪些。

corePoolSize:线程池的核心大小,也可以理解为最小的线程池大小。

maximumPoolSize:最大线程池大小。

keepAliveTime:空余线程存活时间,指的是超过corePoolSize的空余线程达到多长时间才进行销毁。

unit:销毁时间单位。

workQueue:存储等待执行线程的工作队列。

threadFactory:创建线程的工厂,一般用默认即可。

handler:拒绝策略,当工作队列、线程池全已满时如何拒绝新任务,默认抛出异常。

线程池工作流程

1、如果线程池中的线程小于corePoolSize时就会创建新线程直接执行任务。

2、如果线程池中的线程大于corePoolSize时就会暂时把任务存储到工作队列workQueue中等待执行。

3、如果工作队列workQueue也满时:当线程数小于最大线程池数maximumPoolSize时就会创建新线程来处理,而线程数大于等于最大线程池数maximumPoolSize时就会执行拒绝策略。

线程池的7大参数是什么?

线程池的7大参数包括:核心线程数、最大线程数、空闲线程存活时间、任务队列、拒绝策略、线程工厂、任务执行器。

核心线程数指的是线程池同时能够执行的任务数量;最大线程数表示线程池中最多能创建的线程数量;空闲线程存活时间是指当线程池处于空闲状态时,多久会被销毁;任务队列用于存储还未执行的任务;

拒绝策略定义了当任务队列已满且达到最大线程数时,如何处理新添加的任务;线程工厂用于创建新的线程;任务执行器是一个接口,用于执行提交的任务。以上参数的合理设置可以对线程池的性能和效率产生重要影响。

线程池的7大参数通常是指以下参数:

1. 核心线程数(corePoolSize):线程池中保持的常驻线程的数量,即使线程处于空闲状态也不会被回收。

2. 最大线程数(maximumPoolSize):线程池允许的最大线程数量,包括核心线程和非核心线程。

3. 空闲线程存活时间(keepAliveTime):当线程池中的线程数量超过核心线程数,并且这些线程处于空闲状态时,这些空闲线程在被终止之前等待新任务的最长时间。

4. 时间单位(unit):用于指定空闲线程存活时间的单位,例如毫秒(MILLISECONDS)、秒(SECONDS)等。

5. 阻塞队列(workQueue):用于存放等待执行的任务的队列,当线程池中的线程全部被占用时,新任务将被放入队列等待执行。

6. 线程工厂(threadFactory):用于创建线程的工厂类,可自定义线程的命名、优先级等属性。

7. 拒绝策略(rejectedExecutionHandler):当线程池无法接受新任务时的处理策略,例如抛出异常、丢弃任务等。

这些参数可以根据实际需求进行配置,以便优化线程池的性能和资源利用。

线程池存活时间设置多久比较好?

缓存线程池,缓存的线程默认存活60秒。

线程的核心池corePoolSize大小为0,核心池最大为Integer.MAX_VALUE,阻塞队列使用的是SynchronousQueue。是一个直接提交的阻塞队列, 他总会迫使线程池增加新的线程去执行新的任务。在没有任务执行时,当线程的空闲时间超过keepAliveTime(60秒),则工作线程将会终止被回收,当提交新任务时

设置60秒比较好,keepAliveTime(线程存活保持时间)作用:当线程池中线程数大于核心线程数时,线程的空闲时间如果超过线程存活时间,那么这个线程就会被销毁,直到线程池中的线程数小于等于核心线程数。