java多线程编程:Java 多线程和并发编程整理总结

        认识多任务、多进程、单线程、多线程   要认识多线程就要从操作系统原理说起

  以前古老DOS操作系统(V 6.22)是单任务还没有线程概念系统在每次只能做件事情比如你在copy东西时候不能rename文件名为了提高系统利用效率采用批处理来批量执行任务

  现在操作系统都是多任务操作系统每个运行任务就是操作系统所做件事情比如你在听歌同时还在用MSN和好友聊天听歌和聊天就是两个任务这个两个任务是“同时”进行个任务般对应个进程也可能包含好几个进程比如运行MSN就对应个MSN进程如果你用是windows系统你就可以在任务管理器中看到操作系统正在运行进程信息

  般来说当运行个应用时候就启动了个进程当然有些会启动多个进程启动进程时候操作系统会为进程分配资源其中最主要资源是内存空间是在内存中运行在进程中有些流程块是可以乱序执行并且这个代码块可以同时被多次执行实际上这样代码块就是线程体线程是进程中乱序执行代码流程当多个线程同时运行时候这样执行模式成为并发执行

  多线程是为了最大限度利用CPU资源

  Java编写都运行在在Java虚拟机(JVM)中在JVM内部多任务是通过线程来实现每用java命令启动个java应用就会启动个JVM进程在同个JVM进程中有且只有个进程就是它自己在这个JVM环境中所有代码运行都是以线程来运行

  般常见Java应用都是单线程比如用java命令运行个最简单HelloWorldJava应用就启动了个JVM进程JVM找到入口点然后运行思路方法这样就产生了个线程这个线程称的为主线程思路方法结束后主线程运行完成JVM进程也随即退出

  对于个进程中多个线程来说多个线程共享进程内存块当有新线程产生时候操作系统不分配新内存而是让新线程共享原有进程块内存因此线程间通信很容易速度也很快区别进程处于区别内存块因此进程的间通信相对困难

  实际上操作系统多进程实现了多任务并发执行多线程实现了进程并发执行多任务、多进程、多线程前提都是要求操作系统提供多任务、多进程、多线程支持

  在JavaJVM负责线程调度线程调度是值按照特定机制为多个线程分配CPU使用权

  调度模式有两种:分时调度和抢占式调度分时调度是所有线程轮流获得CPU使用权并平均分配每个线程占用CPU时间;抢占式调度是根据线程优先级别来获取CPU使用权JVM线程调度模式采用了抢占式模式

  所谓“并发执行”、“同时”其实都不是真正意义上“同时”众所周知CPU都有个时钟频率表示每秒中能执行cpu指令次数在每个时钟周期内CPU实际上只能去执行条(也有可能多条)指令操作系统将进程线程进行管理轮流(没有固定顺序)分配每个进程很短段是时间(不定是均分)然后在每个线程内部代码自己处理该进程内部线程时间分配多个线程的间相互切换去执行这个切换时间也是非常短因此多任务、多进程、多线程都是操作系统给人种宏观感受从微观角度看运行是异步执行

  用句话做整理总结:虽然操作系统是多线程但CPU每时刻只能做件事和人大脑是呵呵


="xspace-totlerecord">7="xspace-totlepages">1/7="xspace-current">1234567>
Tags:  java多线程设计模式 多线程编程 java多线程 java多线程编程

延伸阅读

最新评论

发表评论