透明 发表于 2015-1-16 14:22:22

NET网页编程之多线程的观点

我见过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关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。

第二个灵魂 发表于 2015-1-18 13:39:55

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

乐观 发表于 2015-1-23 05:05:25

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

简单生活 发表于 2015-1-31 14:33:14

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

爱飞 发表于 2015-2-6 20:16:10

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。

莫相离 发表于 2015-2-18 13:40:05

那么,ASP.Net有哪些改进呢?

小女巫 发表于 2015-3-6 08:32:06

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

变相怪杰 发表于 2015-3-12 23:57:46

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

飘灵儿 发表于 2015-3-20 06:44:52

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
页: [1]
查看完整版本: NET网页编程之多线程的观点