java多线程例子
到这里我们做一个完整的例子来说明线程产生的方式不同而生成的线程的区别:
package debug;
import java.io.*;
import java.lang.Thread;
class MyThread extends Thread{
public int x = 0;
public void run(){
System.out.println(++x);
}
}
class R implements Runnable{
private int x = 0;
public void run(){
System.out.println(++x);
}
}
public class Test {
public static void main(String[] args) throws Exception{
for(int i=0;i<10;i++){
Thread t = new MyThread();
t.start();
}
Thread.sleep(10000);//让上面的线程运行完成
R r = new R();
for(int i=0;i<10;i++){
Thread t = new Thread(r);
t.start();
}
}
}
上面10个线程对象产生的10个线程运行时打印了10次1。下面10个线程对象产生的10个线程运行时打印了1到10。我们把下面的10个线程称为同一实例(Runnable实例)的多个线程
。
下节我们将研究线程对象方法,还是那句话,一般文档中可以读到的内容我不会介绍太多
请大家自己了解。
线程对象的几个重要的方法
尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的。
本来打算用一节的篇幅来把线程方法中一些重要的知识说完,但这样下来估计要很常的篇幅,可能要用好几节才能说把和线程方法相关的一些重要的知识说完。
首先我们接基础篇(二)来说明start()方法。
一个线程对象生成后,如果要产生一个执行的线程,就一定要调用它的start()方法.在介绍这个方法时不得不同时说明run方法.其实线程对
象的run方法完全是一个接口回调方法,它是你这个线程对象要完成的具体逻辑.简单说你要做什么就你在run中完成,而如何做,什么时候做就不需要你控制
了,你只要调用start()方法,JVM就会管理这个线程对象让它产生一个线程并注册到线程处理系统中。
从表面上看,start()方法调用了run()方法,事实上,start()方法并没有直接调用run方法.在JDK1.5以前
start()方法是本地方法,它如何最终调用run方法已经不是JAVA程序员所能了解的.而在JDK1.5中,原来的那个本地start()方法被
start0()代替,另个一个纯JAVA的start()中调用本地方法start0(),而在start()方法中做了一个验证,就是对一个全局变量
(对象变量)started做检验,如果为true,则start()抛
相关文档:
ANT-build.xml文件详解
http://www.diybl.com/course/3_program/java/javajs/20081122/152210.html#
Ant的概念
可能有些读者并不理解什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编
译Linux内核及一些软件的源程序时,经常要用这个命令。Make ......
一个java的class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major,下面是这个类文件版本与JDK的对应关系。class文件的minor和major可以通过ultraedit来查看,或自己编程等。
major minor Java platform version
45 3 1.0
45 3 1.1
46 0 ......
看到这篇关于Java多态的帖子,觉得很多,基本涵盖了Java多态的各种场景,这里转给大家参考:
http://blog.csdn.net/thinkghoster/archive/2008/04/19/2307001.aspx
深入理解java多态性
昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理 ......
今天小编和大家分享的是Java程序编写规范,希望能对大家有所帮助。
exit()
exit 除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码代码机会来截获退出。一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。
异常
申明的错误应该抛出一个RuntimeException或者派生的异常。
......
方法一:
若使用JBuilder7,步骤如下: 1、首先建立工程,Application。这些就不需要详细说明。 2、选择菜单Wizards下的archive Builder 3、在archive type中选择Application 4、在Name选项中给可执行程序起名,其他选项默认 5、包含进该工程中所有的类和资源 6、含类库中所有的类和资源 7、下面两步默认 8、 ......