仓酷云

标题: JAVA网页设计Java 线程进门仓酷云 [打印本页]

作者: 柔情似水    时间: 2015-1-18 11:15
标题: JAVA网页设计Java 线程进门仓酷云
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。主线程

起首每一个Java程序都是从主线程入手下手运转的,主线程就是实行main()办法的谁人线程。在main()办法中猎取以后线程很复杂:
  1. //示例1publicstaticvoidmain(String[]args){ThreadmainThread=Thread.currentThread();System.out.println("以后线程:"+mainThread.getName());}
复制代码
Thread对象的文档在这里。Thread对象包括良多办法和属性,除下面例子傍边的name属性外,另有形态、优先级等等。如今我们只必要晓得main()办法是在主线程中运转就能够了。
线程是能够停息的

我们一般利用sleep()办法来使线程在指定的工夫内停息实行。上面是一个在主线程中实行轮回和停息的例子:
  1. //示例2publicstaticvoidmain(String[]args){for(inti=0;i<10;i++){System.out.println(i);try{Thread.sleep(500);//停息线程}catch(InterruptedExceptione){e.printStackTrace();}}}
复制代码
注重:起首,sleep()办法是静态的,由于它永久只能用在以后的线程上;其次,sleep()办法会抛出非常,该非常一般产生在停息形态被打断时。以是这里用try-catch代码块包抄起来。
sleep()办法承受一个long范例的参数,指明必要停息几毫秒。这个例子傍边,我们轮回输入i变量,共轮回10次,每输入一次就停息500毫秒。
你大概以为全部程序的运转工夫会是准确的5000毫秒,但请万万不要这么以为,起首sleep()办法并不是非常准确,CPU在各个线程之间切换会要花失落很微量的一点工夫,假如这个例子轮回次数不是10次而是十万次百万次,那末堆集的偏差就会对照年夜了;其次,代码中的System.out.println()办法和轮回处置自己也要花失落一点工夫,以是每次轮回不会是相对准确的500毫秒。
创立新的线程

除主线程外,我们还能够创立和实行别的的线程。实行新线程的体例是挪用该线程对象的start()办法。
  1. //示例3publicstaticvoidmain(String[]args){Threadthread1=newThread();thread1.start();//启动线程}
复制代码
从这个例子中我们能够看到,thread1是一个经由过程newThread()创立出来的对象。把线程看做是对象这点非常主要,这意味着我们能够创立Thread的子类,而子类的对象仍旧是线程对象。实行这段代码甚么输入都没有,由于我们没无为thread1界说要实行甚么操纵。上面的例子中,我们让thread1来做轮回输入。
  1. //示例4publicstaticvoidmain(String[]args){Threadthread1=newThread(){@Overridepublicvoidrun(){//指定线程要做的事for(inti=0;i<10;i++){System.out.println(i);try{Thread.sleep(500);//停息线程}catch(InterruptedExceptione){e.printStackTrace();}}}};thread1.start();//启动线程}
复制代码
这里我们创立了一个Thread类的匿名子类,并覆写了run()办法。经由过程覆写run()办法,我们能够指定线程要做哪些事变。
线程是并行实行的

在示例4中,thread1实际上是与主线程并行实行的。为了演示这点,我们起首将这个轮回提取成一个办法:
  1. privatestaticvoidprintNumbers(intstart,intend){for(inti=start;i<end;i++){System.out.println(i);try{Thread.sleep(500);//停息线程}catch(InterruptedExceptione){e.printStackTrace();}}}
复制代码
然后示例4就酿成了:
  1. publicstaticvoidmain(String[]args){Threadthread1=newThread(){@Overridepublicvoidrun(){printNumbers(0,10);//提掏出来的办法}};thread1.start();//启动线程}
复制代码
我们在最初面增加一行,让主线程在启动thread1以后也做一个轮回输入:
  1. //示例5publicstaticvoidmain(String[]args){Threadthread1=newThread(){@Overridepublicvoidrun(){printNumbers(0,10);//轮回输入}};thread1.start();//启动线程printNumbers(100,110);//主线程也轮回输入}
复制代码
实行main()办法,在输入中你能够看到0~9与100~109瓜代呈现,这申明主线程和thread1在同时实行。
将线程中的逻辑自力出来

为了使线程中的逻辑可以被重用,我们一般将其声明为一个自力的类。在后面的代码示例中,我们都是以匿名类的体例来创立线程的。自力声明一个线程类的体例是如许的:
  1. //示例6publicclassMyThreadextendsThread{privateintstart;privateintend;//机关办法publicMyThread(intstart,intend){this.start=start;this.end=end;}@Overridepublicvoidrun(){printNumbers();}privatevoidprintNumbers(){for(inti=this.start;i<this.end;i++){System.out.println(i);try{Thread.sleep(500);//停息线程}catch(InterruptedExceptione){e.printStackTrace();}}}}
复制代码
在示例6中我们能够看到,实行这个线程所需的两个参数如今酿成了MyThread的两个成员。这是我们向线程传送实行参数的一样平常体例。提取成自力的类以后,线程利用起来就十分复杂了:
  1. publicstaticvoidmain(String[]args){newMyThread(0,10).start();newMyThread(100,110).start();newMyThread(1000,1010).start();}
复制代码
线程的前往值

我们偶然候但愿当线程实行终了时,我们能失掉一个了局。在示例6中我们懂得了向线程传送参数的体例,相似的我们也能够为线程类界说一个成员用来保留线程的实行了局。上面是一个例子:
  1. //示例7publicclassThreadWithReturnValueextendsThread{publicStringresult;@Overridepublicvoidrun(){try{Thread.sleep(3000);this.result="result";//假定发生了局必要对照长的工夫}catch(InterruptedExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args)throwsException{ThreadWithReturnValuethread=newThreadWithReturnValue();thread.start();Thread.sleep(3100);System.out.println(thread.result);//取得了局}}
复制代码
在这个例子傍边,ThreadWithReturnValue线程发生了局必要3秒钟,那末主线程就必要守候3秒以上才干失掉"result",不然就只能失掉null。在实践情形中,我们其实不晓得线程发生了局必要多长工夫,而我们也不想无穷制的等下往。

恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
作者: 冷月葬花魂    时间: 2015-1-20 18:51
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.ckuyun.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 深爱那片海    时间: 2015-1-22 20:12
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 若相依    时间: 2015-1-31 11:07
是一种为 Internet发展的计算机语言
作者: admin    时间: 2015-2-6 14:51
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 变相怪杰    时间: 2015-2-16 16:43
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 再现理想    时间: 2015-2-18 11:38
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 第二个灵魂    时间: 2015-2-23 21:49
Java 编程语言的风格十分接近C、C++语言。
作者: 老尸    时间: 2015-3-7 10:19
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 活着的死人    时间: 2015-3-14 20:14
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 分手快乐    时间: 2015-3-21 14:00
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2