读书人

关于Thread种

发布时间: 2012-10-06 17:34:01 作者: rapoo

关于Thread类
1. Thread类也实现了Runnable接口, 因此可以使用Thread(Runnable target)构造函数初始化实例变量.



在Thread类中的run方法只判断target是否存在, 如果采用以上构造方法,则target存在,就调用target的run()方法. 要么就被Thread子类的run()方法覆盖.这里用到了命令行模式.

       

public synchronized void start() {        /** * This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new functionality added  * to this method in the future may have to also be added to the VM. * * A zero status value corresponds to state "NEW".         */        if (threadStatus != 0)            throw new IllegalThreadStateException();        group.add(this);        start0();        if (stopBeforeStart) {    stop0(throwableFromStop);}    }    private native void start0();


3. 实现Rannable接口方式创建多个线程时,各个线程就可以共享实现类某个实例的实例变量,当然不同实现类实例则仍不共享;继承Thread方式创建多线程,则每个线程都有实现类的实例变量, 但实现类的静态变量仍是被各个线程共享.

补充:

当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法。本地方法非常有用,因为它有效地扩充了jvm.事实上,我们所写的java代码已经用到了本地方法,在sun的java的并发(多线程)的机制实现中,许多与操作系统的接触点都用到了本地方法,这使得java程序能够超越java运行时的界限。有了本地方法,java程序可以做任何应用层次的任务。

java中,通过JNI(Java Native Interface,java本地接口)来实现本地化。
Native方法一般用于两种情况:

1)在方法中调用一些不是由java语言写的代码。
2)在方法中用java语言直接操纵计算机硬件。

如果使用了native方法也就丢失了java的方便性和安全性。Native方法的执行依赖于JVM的设计者,比如在sun的JVM中,可以通过JNI(Java Native Interface) API接口来实现本地化。

读书人网 >编程

热点推荐