当前位置: 首页 > news >正文

win2003 建设网站三门峡网站建设

win2003 建设网站,三门峡网站建设,类似传奇的网页游戏,天津网站建设网络Java实现100万 的高并发、高性能设计 1、简述 现百万级并发编是一项综合性的技术#xff0c;同时#xff0c;它与现实生活中 的场景有着紧密的联系。 搞懂并发编程有三大核心问题 分工问题 同步问题 互斥问题 本文就对这三大核心问题进行简单的介绍 2、分工问题 关于分工…Java实现100万 的高并发、高性能设计 1、简述 现百万级并发编是一项综合性的技术同时它与现实生活中 的场景有着紧密的联系。 搞懂并发编程有三大核心问题 分工问题 同步问题 互斥问题 本文就对这三大核心问题进行简单的介绍 2、分工问题 关于分工比较官方的解释是一个比较大的任务被拆分成多个大小合适的任务这些大小合适的任务被交给合适的线程去执行。 分工强调的是执行的性能。 类比现实案例 可以类比现实生活中的场景来理解分工例如如果你是一家上市公司的 CEO那么你的主要工作就是规划公司的战略方向和管理好公司。就如何管理好公司而言涉及的任务就比较多了。 这里可以将管理好公司看作一个很大的任务这个很大的任务可以包括人员招聘与管理、 产品设计、产品开发、产品运营、产品推广、税务统计和计算等。如果将这些工作任务都交给 CEO一个人去做那么估计 CEO 会被累趴下的。 有一种很好的方式是分解公司的日常工作将人员招聘与管理工作交给人力资源部将产 品设计工作交给设计部将产品开发工作交给研发部将产品运营和产品推广工作分别交给运 营部和市场部将公司的税务统计和计算工作交给财务部。 这样CEO 的重点工作就变成了及时了解各部门的工作情况统筹并协调各部门的工作 并思考如何规划公司的战略。 将公司的日常工作分工后可以发现各部门之间的工作是可以并行推进的。例如在人力资源部进行员工的绩效考核时设计部和研发部正在设计和开发公司的产品与此同时公司的运营人员正在和设计人员与研发人员沟通如何更好地完善公司的产品而市场部正在加大力度宣传和推广公司的产品财务部正在统计和计算公司的各种财务报表等。一切都是那么有条不紊。 所以在现实生活中安排合适的人去做合适的事情是非常重要的。映射到并发编程领域 也是同样的道理。 并发编程中的分工 在并发编程中同样需要将一个大的任务拆分成若干比较小的任务并将这些小任务交给 不同的线程去执行。 将一个大的任务拆分成若干比较小的任务 在并发编程中由于多个线程可以并发执行所以在一定程度上能够提高任务的执行效率。 在并发编程领域还需要注意一个问题就是将任务分给合适的线程去做。也就是说该由主线程执行的任务不要交给子线程去做否则是解决不了问题的。 这就好比一家公司的 CEO 将规划公司未来的工作交给一位产品开发人员一样不仅不能规划好公司的未来甚至会与公司的价值观背道而驰。 在Java 中线程池、Fork/Join 框架和 Future 接口都是实现分工的方式。在多线程设计模式中Guarded Suspension 模式、Thread-Per-Message 模式、生产者—消费者模式、两阶段终止模式、Worker-Thread 模式和 Balking 模式都是分工问题的实现方式。 3、同步问题 在并发编程中同步指一个线程执行完自己的任务后以何种方式来通知其他的线程继续执行任务也可以将其理解为线程之间的协作同步强调的是执行的性能。 类比现实案例 可以在现实生活中找到与并发编程中的同步问题相似的案例。 例如张三、李四和王五共同开发一个项目张三是一名前端开发人员他需要等待李四的开发接口任务完成再开始渲染 页面而李四又需要等待王五的服务开发工作完成再写接口。 也就是说任务之间是存在依赖关系的前面的任务完成后才能执行后面的任务。 在现实生活中这种任务的同步更多的是靠人与人之间的交流和沟通来实现的。例如王五的服务开发任务完成了告诉李四李四马上开始执行开发接口任务。等李四的接口开发完成后再告诉张三张三马上调用李四开发的接口将返回的数据渲染到页面上。 在现实生活中张三、李四和王五的任务之间是有依赖关系的张三渲染页面的任务依赖李四开发接口的任务完成李四开发接口的任务依赖王五开发服务的任务完成。 并发编程中的同步 在并发编程领域同步机制指一个线程的任务执行完成后通知其他线程继续执行任务的方式并发编程同步简易模型。 在并发编程中多个线程之间的任务是有依赖关系的。 线程A 需要阻塞等待线程 B 执行完任务才能开始执行任务线程 B 需要阻塞等待线程 C 执行完任务才能开始执行任务。线程 C 执行完任务会唤醒线程 B 继续执行任务线程 B 执行完任务会唤醒线程 A 继续执行任务。 这种线程之间的同步机制可以使用如下的 if 伪代码来表示。 if(依赖的任务完成){ 执行当前任务 }else{ 继续等待依赖任务的执行 } 上述 if 伪代码所代表的含义是当依赖的任务完成时执行当前任务否则继续等待依 赖任务的执行。 在实际场景中往往需要及时判断出依赖的任务是否已经完成这时就可以使用 while 循 环来代替 if 判断 while 伪代码如下。 while(依赖的任务未完成){ 继续等待依赖任务的执行 } 执行当前任务 上述 while 伪代码所代表的含义是如果依赖的任务未完成则一直等待直到依赖的任务完成才执行当前任务。 在并发编程领域同步机制有一个非常经典的模型——生产者—消费者模型。如果队列已满则生产者线程需要等待如果队列不满则需要唤醒生产者线程如果队列为空则消费者线程需要等待如果队列不为空则需要唤醒消费者。 可以使用下面的伪代码来表示生产者—消费者模型。 生产者伪代码 while(队列已满){ 生产者线程等待 } 唤醒生产者 消费者伪代码 while(队列为空){ 消费者等待 } 唤醒消费者 在Java 中Semaphore、Lock、synchronized.、CountDownLatch、CyclicBarrier、Exchanger 和 Phaser 等工具类或框架实现了同步机制。 4、互斥问题 在并发编程中互斥问题一般指在同一时刻只允许一个线程访问临界区的共享资源。互斥强调的是多个线程执行任务时的正确性。 并发编程中的互斥 在并发编程中分工和同步强调的是任务的执行性能而互斥强调的则是执行任务的正确性也就是线程的安全问题。 如果在并发编程中多个线程同时进入临界区访问同一个共享变量则可能产生线程安全问题这是由线程的原子性、可见性和有序性问题导致的。 而在并发编程中解决原子性、可见性和有序性问题的核心方案就是线程之间的互斥。 例如可以使用JVM中提供的synchronized锁来实现多个线程之间的互斥使用synchronized锁的伪代码如下。 修饰方法 public synchronized void methodName(){ //省略具体方法 } 修饰代码块 public void methodName(){ synchronized(this){ //省略具体方法 }} public void methodName(){ synchronized(obj){ //省略具体方法 } } public void methodName(){ synchronized(ClassName.class){ //省略具体方法 } } 修饰静态方法 public synchronized static void staticMethodName(){ //省略具体方法 } 除了synchronized 锁Java 还提供了 ThreadLocal、CAS、原子类和以CopyOnWrite 开头的并发容器类、Lock 锁及读/写锁等它们都实现了线程的互斥机制。
http://www.w-s-a.com/news/94833/

相关文章:

  • qq钓鱼网站wordpress 企业站模板
  • 推进文明网站建设免费设计公司logo设计
  • 做电脑租赁网站server 2008 网站部署
  • 做网站的公司一年能赚多少钱wordpress作者增加分类插件
  • 苏州尚云网站建设专业摄影网站推荐
  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是
  • dedecms新网站 上传到万网的空间宝洁公司网站做的怎么样
  • 网站建设语录优惠券的网站怎么做的
  • 白山市住房和建设局网站有实力高端网站设计地址
  • 沧州网站建设制作设计优化深圳网站自然优化
  • 企业做网站 乐云seowordpress中修改html
  • 网站细节门户wordpress主题下载
  • 全景网站模版wordpress套餐
  • 华为云建网站dw制作一个手机网站模板
  • 定陶菏泽网站建设河北新出现的传染病