线程是一个程序的顺序控制流,从执行流的角度来说,线程是动态的。
进程是一个静态的概念,比如计算机中的一个. exe文件是一个进程。
一个线程中是顺序执行的,同一线程共享代码和数据空间,每个线程有自己独享的运行栈和程序计数器。
一个进程可能会包括好几个线程,每个进程有自己独立的代码和数据空间。
线程之间的切换开销较小。
进程之间的切换开销较大。
多线程为一个程序中多个顺序流执行。
多进程为同时执行多个程序或者任务。
用Runnable接口实现Java 另起新线程:
Runnable interface------>run( )
new Thread()-------------->start()
start()方法是Thread类中的方法。start方法会调用线程中的run方法。
看api 可以发现Thread 是implemented Runnable接口的子类~
还有一种实现java 多线程的方法就是extend Thread 类,同样需要重写run(),然后使用start()方法调用。
推荐使用的是Runnable方法
A. 接口可以多重继承,但定义的类若继承了Thread类就无法再继承其他类。
B. 使用runnable 还可以实现多个线程操作同一个数据,当然这鞋线程也来自同一个类的实例。
看例子:
public class TestThread {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runner1 r=new Runner1();
Thread t=new Thread(r);
t.start();
for(int i=0;i<1000;i++){
System.out.println("Main Thread:-----------"+i);
}
}
}
class Runner1 implements Runnable{
public void run(){
for(int i=0;i<1000;i++){
System.out.println("Runner1 "+i);
}
}
}
执行结果:
Runner1 908
Runner1 909
Runner1 910
Runner1 911
Runner1 912
Main Thread:-----------325
Runner1 913
Runner1 914
Runner1 915
Runner1 916
Main Thread:-----------326
Runner1 917
Main Thread:-----------327
Runner1 918
Main Thread:-----------328
Runner1 919
Main Thread:-----------329
Runner1 920
Main Thread:-----------330
Runner1 921
Main Thread:-----------331
Runner1 922
Main Thread:-----------332
Runner1 923
Main Thread:-----------333
Runner1 924
Main Thread:-----------334
Runner1 925
Main Thread:-----------335
Runner1 926
Main Thread:-----------336
Runner1 927
Runner1 928
Runner1 929
Runner1 930
Runner1 931
Runner1 932
Runner1 933
Runner1 934
Runner1 935
Runner1 936