会计考友 发表于 2012-8-4 12:44:44

JAVA认证:教你如何进行Java多线程程序设计

一、理解多线程
  多线程是这样一种机制,它承攀ё仝轨范中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相自力。
  线程又称为轻量级历程,它和历程一样拥有自力的执行节制,由操作系统负责调剂,区别在于线程没有自力的存储空间,而是和所属历程中的其它线程共享一个存储空间,这使得线程间的通信远较历程简单。
  多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。假如系统只有一个CPU,那么真正的“同时”是不成能的,可是因为CPU的速度很是快,用户感受不到其中的区别,是以我们也不用关心它,只需要设想各个线程是同时执行即可。
  多线程和传统的单线程在轨范设计上最年夜的区别在于,因为各个线程的节制流彼此自力,使得各个线程之间的代码是乱序执行的,由此带来的线程调剂,同步等问题,将在往后切磋。
  二、在Java中实现多线程
  我们不妨设想,为了建树一个新的线程,我们需要做些什么?很显然,我们必需指明这个线程所要执行的代码,而这就是在Java中实现多线程我们所需要做的一切!
  真是神奇!Java是若何做到这一点的?经由过程类!作为一个完周全向对象的说话,Java供给了类Java.lang.Thread来便利多线程编程,这个类供给了年夜量的体例来便利我们节制自己的各个线程,我们往后的谈判都将环绕这个类进行。
  那么若何供给给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最主要的体例是run,它为Thread类的体例start所挪用,供给我们的线程所要执行的代码。为了指定我们自己的代码,只需要笼盖它!
  体例一:继续 Thread 类,笼盖体例 run,我们在建树的 Thread 类的子类中重写 run ,插手线程所要执行的代码即可。下面是一个例子:
  public class MyThread extends Thread
  public void run
  }
  public static void main
  }
  这种体例简单了然,合适巨匠的习惯,可是,它也有一个很年夜的错误谬误,那就是假如我们的类已经年夜一个类继续(如小轨范必需继续自 Applet 类),则无法再继续 Thread 类,这时假如我们又不想成立一个新的类,应该怎么办呢?
  我们不妨来试探一种新的体例:我们不建树Thread类的子类,而是直接使用它,那么我们只能将我们的体例作为参数传递给 Thread 类的实例,有点近似回调函数。可是 Java 没有指针,我们只能传递一个包含这个体例的类的实例。
  那么若何限制这个类必需包含这一体例呢?当然是使用接口!(虽然抽象类也可知足,可是需要继续,而我们之所以要采用这种新体例,不就是为了避免继续带来的限制吗?)
  Java 供给了接口 Java.lang.Runnable 来撑持这种体例。
页: [1]
查看完整版本: JAVA认证:教你如何进行Java多线程程序设计