Java多线程编程总结.pdfVIP

  • 1
  • 0
  • 约1.17万字
  • 约 10页
  • 2026-03-10 发布于河北
  • 举报

Java多线程编程总结

一、认识多任务、多进程、单线程、多线程

要认识多线程就要从操作系统的原理说起。

以前古老的DOS操作系统(V6.22)单任务的,还没有线程的概念,系统在每次只能做

•件事情。比如你在copy东西的时候不能rename文件名。为了提高系统的利用效率,

采用批处理来批量执行任务。

现在的操作系统都多任务操作系统,每个运行的任务就操作系统所做的一件事情,比如

你在听歌的同时还在用MSN和好友聊天。听歌和聊天就两个任务,这个两个任务同

时”进行的。一个任务一般对应一个进程,也可能包含好几个进程。比如运行的MSN就对

应•个MSN的进程,如果你用的windows系统,你就可以在任务管理器中看到操作系

统正在运行的进程信息。

一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启

动进程的时候,操作系统会为进程分配资源,其中最主要的资源内存空间,因为程序

在内存中运行的。在进程中,有些程序流程块可以乱序执行的,并且这个代码块可以同时

被多次执行。实际上,这样的代码块就线程体。线程进程中乱序执行的代码流程。当多

个线程同时运行的时候,这样的执行模式成为并发执行。

多线程的目的为了最大限度的利用CPU资源。

Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务通过

线程来实现的。每用java命令启动•个java应用程序,就会启动一个JVM进程。在同•

个JVM进程中,有且只有一个进程,就它自己。在这个JVM环境中,所有程序代码的运

行都以线程来运行。

一般常见的Java应用程序都单线程的。比如,用java命令运行一个最简单的HeoWoHd

的Java应用程序时,就启动了一个JVM进程,JVM找到程序程序的入口点main。,然

后运行main。方法,这样就产生了一个线程,这个线程称之为主线程。当main方法结束

后,主线程运行完成。JVM进程也随即退出。

对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,

操作系统不分配新的内存,而让新线程共享原有的进程块的内存。因此,线程间的通信

很容易,速度也很快。不同的进程因为处于不同的内存块,因此进程之间的通信相对困难。

实际上,操作的系统的多进程实现了多任务并发执行,程序的多线程实现了进程的并发执

行。多任务、多进程、多线程的前提都要求操作系统提供多任务、多进程、多线程的支持。

在Java程序中,JVM负责线程的调度。线程调度值按照特定的机制为多个线程分配CPU

的使用权。

调度的模式有两种:分时调度和抢占式调度。分时调度所有线程轮流获得CPU使用权,

并平均分配每个线程占用CPU的时间:抢占式调度根据线程的优先级别来获取CPU的

使用权。JVM的线程调度模式采用了抢占式模式。

所渭的并发执行〃、同时〃其实都不真正意义上的同时。众所周知,CPU都有个时钟频

率,表示每秒中能执行cpu指令的次数。在每个时钟周期内,CPU实际上只能去执行一条

(也有可能多条)指令。操作系统将进程线程进行管理,轮流:没有固定的顺序)分配每个

进程很短的一段是时间(不一定是均分),然后在每个线程内部,程序代码自己处理该进程

内部线程的时间分配,多个线程间相互的切换去执行,这个切换时间也是非常短的。因此

多任务、多进程.、多线程都是悚作系统给人的一种宏观感受,从微观角度看,程序的运行是

异步执行的。

用一句话做总结:虽然操作系统是多线程的,

文档评论(0)

1亿VIP精品文档

相关文档