JAVA面试题解惑系列(十)——话说多线程

VIP免费
2024-12-10 1 0 44.28KB 21 页 5.9玖币
侵权投诉
JAVA 面试题解惑系列(十)——话说多线程
关键字:java面试题 多线程 thread线程池 synchronized死锁
作者:臧圩人(zangweiren)5Y,W'B'g(q!l1q7v-P7]9W
网址:http://zangweiren.javaeye.com
4D+h2a7Z`6k;J
>>>转载请注明出处!<<<
3I!n!X/p8s$}9w$y
线程或者说多线程,是我们处理多任务的强大工具。线程和进程是不同的,每个进程都是一个独立运行的程序,拥有自己的变
量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间
可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间
线程的使用可使我们能够并行地处理一些情。线程过并行的处理给用户带来更的使用体,比如你使用的邮件 系
outlookThunderbirdfoxmail 等),你当然不希望它们在收取新邮件的时候,导致你连已经收下来的邮件都无法阅读 ,
而只能等待收取邮件操作执行完毕。这正是线程的意义所在。
实现线程的方式
实现线程的方式有两种:
继承 java.lang.Thread,并重写它的 run()方法,将线程的执行主体放入其中。*r*v:m:K+p
实现 java.lang.Runnable 接口,实现它的 run()方法,并将线程的执行主体放入其中。-N$d+b%d3V#p
7y3n/z,c:r;R
这是继承 Thread 类实现线程的示例:1]6J,F6x*k3c
Java 代码
publicclassThreadTestextendsThread{8C-Y2T0H.r%`0P%f
publicvoidrun(){
//在这里编写线程执行的主体 0_-X.S;{2^+v7I
//dosomething
};h&^#n"z)F7J2s9?
}5\(P2u'R2H!B
P3Z-w#W1I
publicclassThreadTestextendsThread{'M-A4M3}+p,i
publicvoidrun(){
//在这里编写线程执行的主体
//dosomething6V$c4z%q$E7W"W$|0v
}
}*O7A6Y0d9?0H9F5p
I"p&s8n#X9}1~1{
这是实现 Runnable 接口实现多线程的示例::f-R7g.HP5z+s4H,A(_@
Java 代码5c*H+I2P7z
publicclassRunnableTestimplementsRunnable{,O8F%[*v"e2G!Z7d!T8Q
publicvoidrun(){% F*p(J%Z+j'g-v!h
//在这里编写线程执行的主体 !C3["u)k1v.d%R
//dosomething
}"G(_"w#A&K*O+d.?!@
}
publicclassRunnableTestimplementsRunnable{
publicvoidrun(){%|4S%u&k3c
//在这里编写线程执行的主体
//dosomething
}%?5p#{"km;x&w/?
}
这两种实现方式的区别并不大。继承 Thread 的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就
不能继承别的类的有用的方法了。而使用是想 Runnable 接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线
程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。.s'I!{!c-t1d0q%K
)\6I6E#W.m
如何启动线程3@+{!B+N5m
我们通过以上两种方式实现了一个线程之后,线程的实例并没有被创建,因此它们也并没有被运行。我们要启动一个线程,必
须调用方法来启动它,这个方法就是 Thread start()方法,而不是 run()方法(既不是我们继承 Thread 重写的 run()
方法,也不是实现 Runnable 接口的 run()方法)。run()方法中包含的是线程的主体,也就是这个线程被启动后将要运行的
代码,它跟线程的启动没有任何关系。上面两种实现线程的方式在启动时会有所不同。:l&c3K1v,w+b6~0d4J
继承 Thread 类的启动方式:
Java 代码!b6z*f$o,y-|%T"f5Y,V4p"T
publicclassThreadStartTest{
publicstaticvoidmain(String[]args){;K4p.@,`'Z
//创建一个线程实例 
ThreadTesttt=newThreadTest();
//启动线程 T"H!?H!}3n-g5w#E*y"~
tt.start();
}
}
publicclassThreadStartTest{
publicstaticvoidmain(String[]args){4v.b;X!p&N7_:n
//创建一个线程实例(q$p2y!q3s
ThreadTesttt=newThreadTest();+s* X;z0N,@
//启动线程
tt.start();
}%Q0G[4]3g&t9m!U*r1M
}
/G+i'E/M^(p)y8[
实现 Runnable 接口的启动方式:)c#G0_3?5}.V
Java 代码
publicclassRunnableStartTest{
publicstaticvoidmain(String[]args){
摘要:

JAVA面试题解惑系列(十)——话说多线程关键字: java 面试题多线程thread 线程池synchronized 死锁 作者:臧圩人(zangweiren) 5 Y, W' B' g( q! l1 q7 v- P7 ]9 W网址:http://zangweiren.javaeye.com 4 D+ h2 a7 Z  `6 k; J>>>转载请注明出处!

展开>> 收起<<
JAVA面试题解惑系列(十)——话说多线程.docx

共21页,预览2页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:21 页 大小:44.28KB 格式:DOCX 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 21
客服
关注