|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。1、程序与历程
1、程序:一段静态的代码。
2、历程:程序的一次静态实行历程,它对应从代码加载、实行到实行终了的一个完全历程。
3、历程也称义务,撑持多个历程同时实行的OS就被称为多历程OS或多义务OS。
2、历程与线程
在一个程序外部也能够完成多个义务并发实行,个中每一个义务称为线程。
线程是比历程更小的实行单元,它是在一个历程中自力的把持流,即程序外部的把持流。
特性:线程不克不及自力运转,必需依附于历程,在历程中运转。
每一个程序最少有一个线程称为主线程。
单线程:只要一条线程的历程称为单线程
多线程:有不止一个线程的历程称为多线程
3、开启多线程的长处和弱点
进步界面程序呼应速率。经由过程利用线程,能够将必要大批工夫完成的流程在背景启动独自的线程完成,进步前台界面的响应速率。
充实使用体系资本,进步效力。经由过程在一个程序外部同时实行多个流程,能够充实使用CPU等体系资本,从而最年夜限制的发扬硬件的功能。
当程序中的线程数目对照多时,体系将消费大批的工夫举行线程的切换,这反而会下降程序的实行效力。可是,相对上风来讲,优势仍是很无限的,以是如今的项目开辟中,多线程编程手艺失掉了普遍的使用。
多线程完成
1、在完成线程编程时,起首必要让一个类具有多线程的才能,承继Thread类或完成Runnable接口的类具有多线程的才能,然后创立线程工具,挪用对应的启动线程办法便可完成线程编程。
在一个程序中能够完成多个线程,多线程编程指在统一个程序中启动了两个或两个以上的线程。
在实践完成线程时,Java言语供应了三种完成体例:
(1)承继Thread类
(2)完成Runnable接口
(3)利用Timer和TimerTask组合
2、承继Thread线程类完成多线程
java.lang包中供应了一个专门的线程类(Thread),在该类中封装了很多对线程举行调剂和处置的办法。假如一个类承继了Thread类,则该类就具有了多线程的才能,能够多线程的体例实行。
classMyThreadextendsThread{
publicvoidrun(){
//线程体
}
}
承继Thread类完成多线程。
MyThreadtt1=newMyThread();
//启动线程
tt1.start();
try{
for(inti=0;i<5;i++){
//延时1秒
Thread.sleep(1000);
System.out.println("Main:"+i);
}
}
catch(Exceptione)
{}
注重:
线程的特征:随机性,体系在实行多线程程序时只包管线程是瓜代实行的,至于哪一个线程先实行哪一个线程后实行,则没法取得包管,必要誊写专门的代码才能够包管实行的按次。
关于统一个线程类,也能够启动多个线程
统一个线程不克不及启动两次,
当自界说线程中的run办法实行完成今后,则自界说线程天然出生。而关于体系线程来讲,只要当main办法实行停止,并且启动的别的线程都停止今后,才会停止。当体系线程实行停止今后,程序的实行才真正停止。
3、完成Runable接口
a)多线程工具完成java.lang.Runnable接口而且在该类中重写Runnable接口的run办法。
b)优点:完成Runable接口的办法制止了单承继的范围性。
例1:利用完成Runable接口的体例完成多线程。
classMyThread2implementsRunable{
publicvoidrun(){}//重写Runable接口中的run()办法
}
MyThread2mt1=newMyThread2();
Threadt1=newThread(mt1);
t1.start();
线程的性命周期
1、线程的性命周期
线程是一个静态实行的历程,它也有一个从发生到出生的历程,这就是所谓的性命周期。一个线程在它的性命周期内有5种形态:
1、新建(newThread)
当创立Thread类的一个实例(工具)时,此线程进进新建形态(未被启动)。
比方:Threadt1=newThread();
2、停当(runnable)
线程已被启动,正在守候被分派给CPU工夫片,也就是说此时线程正在停当行列中列队期待失掉CPU资本。比方:t1.start();
3、运转(running)
线程取得CPU资本正在实行义务(run()办法),此时除非此线程主动保持CPU资本大概有优先级更高的线程进进,线程将一向运转到停止。
4、出生(dead)
当线程实行终了或被别的线程杀逝世,线程就进进出生形态,这时候线程不成能再进进停当形态守候实行。
天然停止:一般运转run()办法后停止
非常停止:挪用stop()办法让一个线程停止运转
5、梗塞(blocked)
因为某种缘故原由招致正在运转的线程让出CPU并停息本人的实行,即进进梗塞形态。
正在就寝:用sleep(longt)办法可以使线程进入眠眠体例。一个就寝着的线程在指定的工夫已往可进进停当形态。
正在守候:挪用wait()办法。(挪用motify()办法回到停当形态)
被另外一个线程所堵塞:挪用suspend()办法。(挪用resume()办法恢复)C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。 |
|