Java多线程常用的编程模型

我这里可以大概给你介绍一下,但对于每一种编程模型要看具体的示例是什 么,而且我不可能给你罗列所有的代码,请谅解。

其实我们编程只要尽量站到比较高的层次,很多道理其实你会发现你已经懂 了。

就多线程来说,我们开始设想只有两个线程(>2时是不是算数学归纳法? )那么如果两个独立的线程会发生什么呢?

1。当一个线程进入moniter(也就是说站用一个object),另一个线程只有 等待或返回,而我们把返回就称为一种模式,这种模式的英文是Balking。

2。这两个线程可以是有序的执行,而不是让OS来调度,这时我们要用一个 object来调度,这种模式称为Scheduler。(这个词及其含义其实OS中就有)。

3。如果这两个线程同时读一个资源,我们可以让他们执行,但如果同时写的话,你闭着眼睛都会知道可能出现问题,这时我们就要用另一种模式 (Read/Write Lock)。

4。如果一个线程是为另一个线程服务的话,比如IE中负责数据传输的线程和 界面显示的线程,当一个图片没有传完时,另一个线程就无法显示,至少是部分 没有传完。那么这时我们要用一个模式称为生产者和消费者,英文是Producer- Consumer。

5。两个线程的消亡也可以不是完全又OS来控制的,这时我们需要给出一个条 件,使得每个线程在符合条件是才消亡,也就是有序的消亡,我们称为Two- Phase Termination。

那么有这5个线程模型,基本上可以用到大多数编程任务中。我需要指出的三 点是:

1。从高层次上我们可以再验证是否含盖了所有的情况。

2。其实模式不是完全固定的或者说象定律一样,而模式可以为不同的情况进 行适当 的调整和组合,目的是为了简洁和高效。

3。学习模式是为了具备更好的分析问题的能力。

而似乎这些来自西方的技术,并且是目前的,我们有没有呢?其实我个人有 个大胆的推测,我认为我们祖先的《孙子兵法》就是很好设计模式,因为它符合 设计模式需要的基本特征,就是在特定的条件下,用某种特定的方式合理且高效 的解决问题。只不过一是用在军事上,二是完备性方面我们还没研究。但我认为 我们至少没有很好的扩展和进行类比式的应用,否则今天可能是我们中国人教外 国人什么是设计模式。

类比的方法实际上是发明或发现的常用方法。不知能否让你感觉到其实外国 的技术并不是那么的神秘,也许我们从自身的文化当中挖掘出的东西太少了。

时间: 2024-09-19 10:10:27

Java多线程常用的编程模型的相关文章

多线程服务器的常用编程模型

本文主要讲我个人在多线程开发方面的一些粗浅经验.总结了一两种常用的线程模型, 归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序. 文中的"多线程服务器"是指运行在 Linux 操作系统上的独占式网络应用程序.硬件平 台为 Intel x64 系列的多核 CPU,单路或双路 SMP 服务器(每台机器一共拥有四个核或八 个核,十几 GB 内存),机器之间用百兆或千兆以太网连接.这大概是目前民用 PC 服务器 的主流配置. 本文不涉及 Windows 系统,不涉及人机

java多线程:并发包中的信号量和计数栓的编程模型

一:信号量的编程模型 1 package com.yeepay.sxf.test.atomic.test; 2 3 import java.util.concurrent.Semaphore; 4 5 /** 6 * 测试信号量 7 * 相当于有一把可以控制并发量的锁. 8 * 例如银行柜台,只有两个窗口.但三个人做业务,只允许同时有两个人能进行做业务 9 * 10 * 多线程 11 * @author sxf 12 * 13 */ 14 public class TestSemaphore {

Java多线程编程简明教程(1) - Future模式与AsyncTask

Java多线程编程简明教程 缘起 关于多线程编程的教程汗牛充栋了,比如阿里集团内部就有一粟.高铁等大牛的讲座,更不用说有清英同学专门创建了并发编程网站来专注于这件事情.专门讲Java并发开发的书籍也是相当丰富了. 我们举个例子,典型的一本Java多线程开发的教材是这样写的,上来就是介绍如何创建线程,然后再讲线程安全,线程之间如何做同步和通信,接着才是线程池和执行器,最后是线程安全的数据结构. 这样写当然从技术上讲是没问题的,不过问题在于,门槛太高了.假如读者的时间短,只看完创建线程这一章就开始照

Java 并发/多线程教程(四)-并发模型

       本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正!        并发系统可以有多种并发模型来实现,并发模型指定线程如何协同完成分配给他们的任务.不同的并发模型以不同的方式划分任务,并且线程与线程之间以不同的方式进行通信和协作. 并发模型与分布式系统的相似性          本文中描述的并发模型类似于分布式系统中使用的不同体系结构.在并发系统中,不同

Java多线程编程实战之基础

在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应该能够编写简单的多线程程序. 为什么会排队等待? 下面的这个简单的 Java 程序完成四项不相关的任务.这样的程序有单个控制线程,控制在这四个任务之间线性地移动.此外,因为所需的资源 - 打印机.磁盘.数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含明显的等待时间.因

Java多线程编程实战之限制优先级

限制线程优先级和调度 Java 线程模型涉及可以动态更改的线程优先级.本质上,线程的优先级是从 1 到 10 之间的一个数字,数字越大表明任务越紧急.JVM 标准首先调用优先级较高的线程,然后才调用优先级较低的线程.但是,该标准对具有相同优先级的线程的处理是随机的.如何处理这些线程取决于基层的操作系统策略.在某些情况下,优先级相同的线程分时运行:在另一些情况下,线程将一直运行到结束.请记住,Java 支持 10 个优先级,基层操作系统支持的优先级可能要少得多,这样会造成一些混乱.因此,只能将优先

实战Java多线程编程精要之限制优先级

限制线程优先级和调度 Java 线程模型涉及可以动态更改的线程优先级.本质上,线程的优先级是从 1 到 10 之间的一个数字,数字越大表明任务越紧急.JVM 标准首先调用优先级较高的线程,然后才调用优先级较低的线程.但是,该标准对具有相同优先级的线程的处理是随机的.如何处理这些线程取决于基层的操作系统策略.在某些情况下,优先级相同的线程分时运行:在另一些情况下,线程将一直运行到结束.请记住,Java 支持 10 个优先级,基层操作系统支持的优先级可能要少得多,这样会造成一些混乱.因此,只能将优先

Java多线程编程基础之线程和多线程

[写在前面] 随着计算机技术的发展,编程模型也越来越复杂多样化.但多线程编程模型 是目前计算机系统架构的最终模型.随着CPU主频的不断攀升,X86架构的硬件已 经成为瓶,在这种架构的CPU主频最高为4G.事实上目前3.6G主频的CPU已经接近了顶峰. 如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么 继续提高CPU性能的方法就是超线程CPU模式.那么,作业系统.应用程序要发挥 CPU的最大性能,就是要改变到以多线程编程模型为主的并行处理系统和并发式 应用程序. 所以,掌握

JAVA学习(九):JAVA多线程编程

本文详细解释JAVA多线程编程,首先对进程和线程做了区别,其次介绍线程的两种实现方式,即继承Thread类和实现Runnable接口,然后讨论了线程常用的方法和优先级,最后介绍了线程的同步和死锁以及线程的生命周期.   1.进程与线程的区别与联系 进程:是应用程序的运行实例,是应用程序的一次动态执行.进程是由进程控制块.程序段和数据段3部分组成的.进程是操作系统进行资源分配的单位. 线程:是进程中的一个实体,其本身依靠程序进行运行,是程序中的顺序控制流,只能使用分配给程序的资源和环境.线程是被系