ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:24.52KB ,
资源ID:3030525      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3030525.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java中的多线程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java中的多线程.docx

1、java中的多线程java中的多线程在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。对于直接继承Thread的类来说,代码大致框架是:?123456789101112class 类名 extends Thread方法1;方法2;public void run()/ other code属性1;属性2;先看一个简单的例子:1234567891011121314151617181920212223/* author Rollen-Holt 继承Thread类,直接调用run方法* */class hello extends Thread publ

2、ic hello() public hello(String name) this.name = name;public void run() for (int i = 0; i 5; i+) System.out.println(name + 运行 + i);public static void main(String args) hello h1=new hello(A);hello h2=new hello(B);h1.run();h2.run();private String name;【运行结果】:A运行0 A运行1 A运行2 A运行3 A运行4 B运行0 B运行1 B运行2 B运行

3、3 B运行4我们会发现这些都是顺序执行的,说明我们的调用方法不对,应该调用的是start()方法。当我们把上面的主函数修改为如下所示的时候:?123456public static void main(String args) hello h1=new hello(A);hello h2=new hello(B);h1.start();h2.start();然后运行程序,输出的可能的结果如下:A运行 0 B运行 0 B运行 1 B运行 2 B运行 3 B运行 4A运行 1 A运行 2 A运行 3 A运行 4因为需要用到CPU的资源,所以每次的运行结果基本是都不一样的,呵呵。注意:虽然我们在这里

4、调用的是start()方法,但是实际上调用的还是run()方法的主体。那么:为什么我们不能直接调用run()方法呢?我的理解是:线程的运行需要本地操作系统的支持。如果你查看start的源代码的时候,会发现:123456789101112131415public 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 th

5、is method in the future may have to also be added to the VM.* A zero status value corresponds to state NEW.*/if (threadStatus != 0 | this != me)throw new IllegalThreadStateException();group.add(this);start0();if (stopBeforeStart) stop0(throwableFromStop);private native void start0();注意我用红色加粗的那一条语句,说

6、明此处调用的是start0()。并且这个这个方法用了native关键字,次关键字表示调用本地操作系统的函数。因为多线程的实现需要本地操作系统的支持。但是start方法重复调用的话,会出现java.lang.IllegalThreadStateException异常。通过实现Runnable接口:大致框架是:123456789101112class 类名 implements Runnable方法1;方法2;public void run()/ other code属性1;属性2;来先看一个小例子吧:123456789101112131415161718192021222324/* author

7、 Rollen-Holt 实现Runnable接口* */class hello implements Runnable public hello() public hello(String name) this.name = name;public void run() for (int i = 0; i 5; i+) System.out.println(name + 运行 + i);public static void main(String args) hello h1=new hello(线程A);Thread demo= new Thread(h1);hello h2=new he

8、llo(线程);Thread demo1=new Thread(h2);demo.start();demo1.start();private String name;【可能的运行结果】:线程A运行 0 线程运行 0 线程运行 1 线程运行 2线程运行 3 线程运行 4 线程A运行 1线程A运行 2 线程A运行 3 线程A运行 4关于选择继承Thread还是实现Runnable接口?其实Thread也是实现Runnable接口的:12345678class Thread implements Runnable /public void run() if (target != null) targ

9、et.run();其实Thread中的run方法调用的是Runnable接口的run方法。不知道大家发现没有,Thread和Runnable都实现了run方法,这种操作模式其实就是代理模式。关于代理模式,我曾经写过一个小例子呵呵,大家有兴趣的话可以看一下:Thread和Runnable的区别:如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。?1234567891011121314151617181920212223/* author Rollen-Holt 继承Thread类,不能资源共享* */class hello extends

10、 Thread public void run() for (int i = 0; i 0) System.out.println(count= + count-);public static void main(String args) hello h1 = new hello();hello h2 = new hello();hello h3 = new hello();h1.start();h2.start();h3.start();private int count = 5;【运行结果】:count= 5count= 4count= 3count= 2count= 1count= 5c

11、ount= 4count= 3count= 2count= 1count= 5count= 4count= 3count= 2count= 1大家可以想象,如果这个是一个买票系统的话,如果count表示的是车票的数量的话,说明并没有实现资源的共享。我们换为Runnable接口?123456789101112131415161718192021class MyThread implements Runnableprivate int ticket = 5; /5张票public void run() for (int i=0; i 0) System.out.println(Thread.currentThread().getName()+ 正在卖票+this.ticket-);public class lzwCode

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1