JAVA面试题解惑系列(十)——话说多线程关键字:java面试题多线程thread线程池synchronized死锁作者:臧圩人(zangweiren)5Y,W'B'g(q!l1q7v-P7]9W网址:http://zangweiren.javaeye.com4D+h2a7Z`6k;J>>>转载请注明出处!<<<3I!n!X/p8s$}9w$y线程或者说多线程,是我们处理多任务的强大工具。线程和进程是不同的,每个进程都是一个独立运行的程序,拥有自己的变量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间。线程的使用可以使我们能够并行地处理一些事情。线程通过并行的处理给用户带来更好的使用体验,比如你使用的邮件系统(outlook、Thunderbird、foxmail等),你当然不希望它们在收取新邮件的时候,导致你连已经收下来的邮件都无法阅读,而只能等待收取邮件操作执行完毕。这正是线程的意义所在。实现线程的方式实现线程的方式有两种:继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。*r*v:m:K+p实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。-N$d+b%d3V#p7y3n/z,c:r;R这是继承Thread类实现线程的示例:1]6J,F6x*k3cJava代码publicclassThreadTestextendsThread{8C-Y2T0H.r%`0P%fpublicvoidrun(){//在这里编写线程执行的主体0_-X.S;{2^+v7I//dosomething};h&^#n"z)F7J2s9?}5\(P2u'R2H!BP3Z-w#W1IpublicclassThreadTestextendsThread{'M-A4M3}+p,ipublicvoidrun(){//在这里编写线程执行的主体//dosomething6V$c4z%q$E7W"W$|0v}}*O7A6Y0d9?0H9F5pI"p&s8n#X9}1~1{这是实现Runnable接口实现多线程的示例::f-R7g.HP5z+s4H,A(_@Java代码5c*H+I2P7zpublicclassRunnableTestimplementsRunnable{,O8F%[*v"e2G!Z7d!T8Qpublicvoidrun(){%F*p(J%Z+j'g-v!h//在这里编写线程执行的主体!C3["u)k1v.d%R//dosomething}"G(_"w#A&K*O+d.?!@}publicclassRunnableTestimplementsRunnable{publicvoidrun(){%|4S%u&k3c//在这里编写线程执行的主体//dosomething}%?5p#{"km;x&w/?}这两种实现方式的区别并不大。继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身...