想法丨发现丨习惯丨人文
让阅读成为习惯,让灵魂拥有温度
请问,Java开发是什么?有的人认为java开发就是一种编程语言,有的人认为Java开发这是一种艺术语言,作为Java开发工程师的你,认为Java开发到底是什么呢?
Java内存模型基础
在并发编程中,线程间如何通信和线程见如何同步时需要处理的两个问题。在命令式的编程中,线程之间的通信主要依靠内存共享和消息传递。同步时指程序中用于控制不同线程之间操作发生相对顺序的机制。在共享内存并发模型中,需要显式指定某个方法或代码需要在线程之间互斥执行。
队列同步器
AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。
独占锁:是在同一时刻只能有一个线程获取到锁,而其他获取锁的线程只能处于同步队列中等待,只有获取锁的线程释放了锁,后续的线程才能获取锁。
在获取同步状态时,同步器维护一个同步队列,获取状态失败的线程都会被加入到队列中并在队列中进行自旋;移除队列(或停止自旋)的条件是前驱结点为头结点且成功获取了同步状态。在释放同步状态时,同步器调用tryRelease(int arg)方法同步状态,然后唤醒头结点的后继节点。
CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换会这个任务,可以再加载这个任务的状态,所以任务从保存到再加载的过程就是一次上下文切换。
上下文的切换是会影响效率(任务的执行时间)的,同样上下文切换也会影响多线程的执行速度。
身处IT行业的小编,看着周边的Java工程师们,不管怎么说,能够写出一个好的软件不是一件容易的事情,能够做到精益求精,更不是一件容易的事情。
所以,针对Java开发工程师以及所有做编程的朋友来说,刚进入行业初期,代码是技术活,当基础打牢,你的能力足以担任项目中的重要角色时,你就可以把编程工作修炼成一门艺术。用艺术的手法去创造出更多的好产品。
领取专属 10元无门槛券
私享最新 技术干货