a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 0

[专业语言] JAVA认证:教你如何进行Java多线程程序设计

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
一、理解多线程+ a7 F3 Y0 k/ H" U( k
  多线程是这样一种机制,它承攀ё仝轨范中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相自力。
' u) {7 w* {! M1 D0 X  线程又称为轻量级历程,它和历程一样拥有自力的执行节制,由操作系统负责调剂,区别在于线程没有自力的存储空间,而是和所属历程中的其它线程共享一个存储空间,这使得线程间的通信远较历程简单。
! ^+ e7 ?  ]: T- r. {8 O  多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。假如系统只有一个CPU,那么真正的“同时”是不成能的,可是因为CPU的速度很是快,用户感受不到其中的区别,是以我们也不用关心它,只需要设想各个线程是同时执行即可。
# O$ ^3 n5 H# L: `5 a  多线程和传统的单线程在轨范设计上最年夜的区别在于,因为各个线程的节制流彼此自力,使得各个线程之间的代码是乱序执行的,由此带来的线程调剂,同步等问题,将在往后切磋。; Z( w- e/ |$ g  t* M
  二、在Java中实现多线程" |8 N  f8 U# O  \3 M
  我们不妨设想,为了建树一个新的线程,我们需要做些什么?很显然,我们必需指明这个线程所要执行的代码,而这就是在Java中实现多线程我们所需要做的一切!
! c( H# v- k: |0 K5 d4 Z/ }9 `  真是神奇!Java是若何做到这一点的?经由过程类!作为一个完周全向对象的说话,Java供给了类Java.lang.Thread来便利多线程编程,这个类供给了年夜量的体例来便利我们节制自己的各个线程,我们往后的谈判都将环绕这个类进行。# Q7 z0 N8 H: o5 T- s0 }
  那么若何供给给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最主要的体例是run,它为Thread类的体例start所挪用,供给我们的线程所要执行的代码。为了指定我们自己的代码,只需要笼盖它!
+ T+ E- }1 m5 a9 s3 w& e  Q  体例一:继续 Thread 类,笼盖体例 run,我们在建树的 Thread 类的子类中重写 run ,插手线程所要执行的代码即可。下面是一个例子:
7 P5 E7 Q$ D) [9 D- Y' }/ i  public class MyThread extends Thread
/ V, {. D- W; Q; ]# w& K  public void run
6 ^  h1 R0 Z  D" c4 a5 l  }+ Y( N' H+ N# p+ d4 D
  public static void main) H" b- F! {& K9 W% p
  }' R0 ]3 M: e& t' a
  这种体例简单了然,合适巨匠的习惯,可是,它也有一个很年夜的错误谬误,那就是假如我们的类已经年夜一个类继续(如小轨范必需继续自 Applet 类),则无法再继续 Thread 类,这时假如我们又不想成立一个新的类,应该怎么办呢?% u: ~' R+ u2 W& {1 D
  我们不妨来试探一种新的体例:我们不建树Thread类的子类,而是直接使用它,那么我们只能将我们的体例作为参数传递给 Thread 类的实例,有点近似回调函数。可是 Java 没有指针,我们只能传递一个包含这个体例的类的实例。& L& p& {5 s% L: u7 _" ?7 i
  那么若何限制这个类必需包含这一体例呢?当然是使用接口!(虽然抽象类也可知足,可是需要继续,而我们之所以要采用这种新体例,不就是为了避免继续带来的限制吗?)
8 Y- K; Y: k4 g# C  Java 供给了接口 Java.lang.Runnable 来撑持这种体例。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 10:31 , Processed in 0.378080 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表