仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 576|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇Java中的历程与线程的完成

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。
概述
历程与线程,实质意义上说,是操纵体系的调剂单元,能够当作是一种操纵体系“资本”。Java作为与平台有关的编程言语,一定会对底层(操纵体系)供应的功效举行进一步的封装,以平台有关的编程接供词程序员利用,进程与线程作为操纵体系中心观点的一部分无疑亦是云云。在Java言语中,对历程和线程的封装,分离供应了Process和Thread相干的一些类。本文起首复杂的先容怎样利用这些类来创立历程和线程,然后侧重先容这些类是怎样和操纵体系本地历程线程绝对应的,给出了Java假造机关于这些封装类的提要性的完成;同时因为Java的封装也埋没了底层的一些概念和可操纵性,本文还对Java历程线程和当地历程线程做了一些复杂的对照,列出了利用Java历程、线程的一些限定和必要注重的成绩。
Java历程的创建办法
在JDK中,与历程有间接干系的类为Java.lang.Process,它是一个笼统类。在JDK中也供应了一个完成该笼统类的ProcessImpl类,假如用户创立了一个历程,那末一定会陪伴着一个新的ProcessImpl实例。同时和历程创立亲切相干的另有ProcessBuilder,它是在JDK1.5中才入手下手呈现的,相对Process类来讲,供应了便利的设置新建历程的情况,目次和是不是兼并毛病流和输入流的体例。
Java.lang.Runtime.exec办法和Java.lang.ProcessBuilder.start办法都能够创立一个当地的历程,然后前往代表这个历程的Java.lang.Process援用。
Runtime.exec办法创建一个当地历程
该办法在JDK1.5中,能够承受6种分歧情势的参数传进。
Processexec(Stringcommand)
Processexec(String[]cmdarray)
Processexec(String[]cmdarrag,String[]envp)
Processexec(String[]cmdarrag,String[]envp,Filedir)
Processexec(Stringcmd,String[]envp)
Processexec(Stringcommand,String[]envp,Filedir)
他们次要的分歧在于传进命令参数的情势,供应的情况变量和界说实行目次。
ProcessBuilder.start办法来创建一个当地的历程
假如但愿在新创立的历程中利用以后的目次和情况变量,则不必要任何设置,间接将命令行和参数传进ProcessBuilder中,然后挪用start办法,就能够取得历程的援用。
Processp=newProcessBuilder("command","param").start();
也能够先设置情况变量和事情目次,然后创立历程。
ProcessBuilderpb=newProcessBuilder("command","param1","param2");
Map<String,String>env=pb.environment();
env.put("VAR","Value");
pb.directory("Dir");
Processp=pb.start();
能够事后设置ProcessBuilder的属性是经由过程ProcessBuilder创立历程的最年夜长处。并且能够在后面的利用中跟着必要往改动代码中pb变量的属性。假如后续代码修正了其属性,那末会影响到修正后用start办法创立的历程,对修正之前创立的历程实例没有影响。
JVM对历程的完成
在JDK的代码中,只供应了ProcessImpl类来完成Process笼统类。个中援用了native的create,close,waitfor,destory和exitValue办法。在Java中,native办法是依附于操纵体系平台的当地办法,它的完成是用C/C++等相似的底层言语完成。我们能够在JVM的源代码中找到对应的当地办法,然后对其举行剖析。JVM对历程的完成绝对对照复杂,以Windows下的JVM为例。在JVM中,将Java中挪用办法时的传进的参数传送给操纵体系对应的办法来完成响应的功效。如表1
JDK中挪用的native办法名对应挪用的WindowsAPIcreateCreateProcess,CreatePipecloseCloseHandlewaitforWaitForMultipleObjectsdestroyTerminateProcessexitValueGetExitCodeProcess以create办法为例,我们看一下它是怎样和体系API举行毗连的。
在ProcessImple类中,存在native的create办法,其参数以下:
privatenativelongcreate(Stringcmdstr,Stringenvblock,
Stringdir,booleanredirectErrorStream,FileDescriptorin_fd,
FileDescriptorout_fd,FileDescriptorerr_fd)throwsIOException;
<p>
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-18 17:00:30 | 只看该作者
是一种突破用户端机器环境和CPU
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-22 14:56:13 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-26 16:54:09 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
admin 该用户已被删除
5#
发表于 2015-1-26 17:17:30 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
蒙在股里 该用户已被删除
6#
发表于 2015-2-2 07:25:12 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-7 17:04:11 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
不帅 该用户已被删除
8#
发表于 2015-2-22 17:18:20 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
若相依 该用户已被删除
9#
发表于 2015-3-7 00:59:33 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小女巫 该用户已被删除
10#
发表于 2015-3-13 23:12:24 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
山那边是海 该用户已被删除
11#
发表于 2015-3-20 22:19:29 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-16 13:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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