1、客观上说程序运行必会收到硬件资源如CPU计算能力、IO读写速度、网络带宽和软件资源如sockets连接数、数据库连接数的限制,为了更快的让程序运行尽早完成它要完成的任务就要突破这些限制。突破硬件资源的限制的方法是将程序的任务分解到多台硬件组成的集群上来执行;突破软件资源的限制可通过资源池的方式来解决。

2、为了更快的提升计算资源的使用效率,电脑系统中运行最快的CPU采用时间片轮换的方式来执行多个任务,如果一个任务还没执行完就要保存当前任务的上下文,下次再执行时再加载这个任务的上下文,这个过程称为上下文切换,上下文切换也会消耗系统资源,为了更高效的利用资源,要尽可能的减少上下文切换。

3、多任务(线程)运行时必然会涉及到共享变量的访问,保证在多任务执行下共享数据的安全访问称之为线程安全,Java中将线程安全划分为5类:不可变、绝对线程安全、相对线程安全、线程兼容、线程对立。

4、如何更好的共享数据,可以用不同步、非阻塞同步、互斥(组赛)同步。不用同步要保证代码块是可重入的或者使用ThreadLocal以空间来换时间的方法来进行。非阻塞同步多基于CAS自旋操作,又称乐观锁策略。互斥同步主要是应用各种锁,从最原始的同步关键字重量级锁逐步优化出现轻量级锁,再优化出现偏向锁;为了让程序能在大多数情况下更高效的运行,jdk6、7默认使用了偏向锁,若不成功会依次升级用轻量级锁、传统重量级锁。

5、操作原子性是多线程同步的一个重要特性,传统CPU通过阻塞总线来实现原子操作,现代CPU增加了阻塞锁定缓存来实现原子操作的特性。JAVA中要实现原子操作,要么通过锁同步,要么通过原子类的CAS自旋操作实现。

晚上睡了,未完待续……

如何让程序更快的运行相关推荐

  1. JVM参数这样配置会让你的程序更快更强

    Java代码的编译,大家都知道是将.java代码编译成.class文件,这个过程是我们常说的编译,也称为前端编译.实际上Java程序的编译和运行不仅仅是将代码编译成.class文件就可以的,因为机器无 ...

  2. [译]写程序更快、更好、更便宜的艺术

    原文 没有人想延迟交付时间.超出预算.没有一个开发人员会在早上醒来的时候想"我今天要做搞一些垃圾代码.我如何才能增加.耗费雇主更多的钱?".尽管如此,还是有许多的软件项目进行的不是 ...

  3. 渐进式web应用程序_如何使用渐进式Web应用程序更快,更便宜地构建新应用程序...

    渐进式web应用程序 You need an app! The question is- which kind? 您需要一个应用程序! 问题是--哪种? For the last 8 years or ...

  4. JAVA性能优化,让程序更快更稳定

    最新的2017年热门编程语言排行榜已经出炉,java排名第一,纵观目前的市场,无论是IT金融软件服务行业或者云业务或大数据行业,java语言是开发的业务程序运用最广泛的语言之一. 本文主要通过分析云系 ...

  5. 个人开发者的福利:比微信小程序更快更省钱的系统构建方式

    有许多个人开发者(包括大学生和部分程序员)有了一些创意,想要快速开发出一个移动应用来验证自己的商业创意,看看是否能吸引到用户. 显然,在移动互联网时代,无论是多么简单的系统,都至少包含3套代码:And ...

  6. 安装 Windows 自动化 API 3.0 时,visual Studio 2010 更快地运行

    如果未安装 Windows 自动化 API 3.0,使用 Windows 自动化 api 的应用程序可以显著减少 Microsoft Visual Studio 智能感知性能. 例如,Windows ...

  7. 如何设置计划任务程序 每6小时运行一次_如何使win10系统运行的更快?

    微软推出的新操作系统Windows 10越来越受到欢迎,用户越来越多,大家是不是会有这样的感觉:同一款电脑,同样的配置,为什么有的人的电脑用起来非常的流畅,而有的人就连打开个网页都卡的要命:有的人的电 ...

  8. [Mac入门] 如果更快的打开程序或文件

    今天有位网友问我在Windows下可以用Ctrl+R快速打开程序/文件夹等,在Mac下有没有相类似的功能?本文将介绍一些我的一般做法. 1.Windows下的Ctrl+R是什么? 我打算从解释Ctrl ...

  9. 用 PyPy 让你的 Python 代码运行得更快!

    Python是开发人员中最常用的编程语言之一,但它有一定的局限性.例如,对于某些应用程序而言,它的运行速度可能比其它语言低100倍.这就是为什么当Python的运行速度成为用户瓶颈后,许多公司会用另一 ...

最新文章

  1. 第三周项目三-输出星号图(3)
  2. 在 Spring中 创建 JavaBean
  3. Ubuntu Docker安装
  4. 20180925-4 单元测试,结对
  5. 延期通知 RocketMQ Summit 议题
  6. 编解码器之战:AV1、HEVC、VP9和VVC
  7. 服务降级-启动时检查
  8. 计算机科学与软件工程-哪个专业最适合您?
  9. 透过NpetShop 看Web项目开发中的分工合作
  10. Linux安装MySQL8.0
  11. 读写锁SRWLock
  12. vue导入音乐_现在哪个软件听音乐完全免费?
  13. 假期要如何过才有意义
  14. Redis简单入门认识
  15. python提取qq群成员代码_Python提取QQ群成员QQ号及昵称
  16. Linux -- dos2unix、unix2dos
  17. Egret引擎学习笔记
  18. html a标签填写header,header中添加a标签,点击无反应
  19. 【无人机组装与调试】第三章 舵机安装与调整
  20. 浅谈 Facade 模式

热门文章

  1. 京东云擎python wsgi windows下的本地测试方法
  2. 基于ssm框架的足球队俱乐部管理系统
  3. python中txt转成csv_Python实现txt文件转csv格式
  4. rgw bucket 防盗链
  5. Bootstrap框架的导入及使用
  6. [个人笔记]计算机网络
  7. html 用css画出斑马线,使用CSS3实现一个斑马线的效果
  8. LTC6811Datasheet里面的isoSPI的解释
  9. tpl.func.php,微擎自带组件 tpl函数
  10. 不太卡出身的高校,有哪些?