多线程 小结
一.??????????? 介绍
每个java程序都至少有一个 – 主线程.当一个java程序启动时,JVM会创建主线程,并在该线程中调用程序的main ()方法。线程可以理解为“程序内部一个独立的运行的单位”;以前我们写的程序也是一个线程,不过只是单线程,只能同时干一件事,所以当我们要处理很多数据时,程序的运行时间让人头大,特别是那个文件搜索,如果一个一个系统盘的找,那实在是慢的可以,单线程程序的运行是线性的,只能一步接一步处理数据,对于这样的需要处理大量数据的程序,多线程无疑是绝佳的选择。稍微解释一下,多线程就是在一个应用程序运行时,会有多个线程在执行,可以完成的是同一件事,也可以是多件事,就好像我们在玩电脑、聊QQ时,既可以聊天,也可以踩空间等等,如果是单线程,估计没事会玩QQ了。
二.??????????? 线程与进程
1.????? 每一个应用程序就是一个进程,而一个进程可以包含多个线程
2.????? 两个进程之间的内部数据和状态是完全独立的,而同一个进程中的多个线程是共享一块内存空间和一组系统资源的,在程序的内部可以相互调用;而大部分的进程之间必须通过网络实现
3.????? 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程之间的切换比进程之间的切换的负担要小。
三.??????????? Java中的多线程实现
? 在java中,对于线程有专门的类,每一个线程对象都需继承java.util.Thread或者实现java.util.Runable,其中Thread是实现了Runable的类,而且要重写父类中的run()方法,要启动线程需调用线程中的start()方法启动,切记不可直接调用run()方法,那样就和一般的单线程方法调用没什么区别了
创建线程对象的方法如下:
1.????? public Test1 ?extends Thread{ run(){…} }//继承Thread类,并重写run()方法
Test1? t1? =? new? Test1();???? t1.start();
2.????? public Test2? implements? Runable{ run(){…}}//实现Runable接口, 并重写run()方法
Test2 ??t2 = new Test2(); Thread? thread? =? new Thread(t2); t1.start();
? 以上两种方法都可以,但考虑到java 的单继承机制,如果需要继承其他的类,则最好实现Runable接口。