java多线程实现和应用总结

java多线程实现和应用总结

ID:8930558

大小:64.50 KB

页数:5页

时间:2018-04-12

java多线程实现和应用总结_第1页
java多线程实现和应用总结_第2页
java多线程实现和应用总结_第3页
java多线程实现和应用总结_第4页
java多线程实现和应用总结_第5页
资源描述:

《java多线程实现和应用总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一.Java多线程的实现方式JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。二.继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。看源码如

2、下:PublicclassThreadimplementsRunnable{。。。。。。略。。。。。publicsynchronizedvoidstart(){/***Thismethodisnotinvokedforthemainmethodthreador"system"*groupthreadscreated/setupbytheVM.Anynewfunctionalityadded*tothismethodinthefuturemayhavetoalsobeaddedtotheVM.**Azerostatusvaluecorrespondstostate"NEW".*/if(threa

3、dStatus!=0)thrownewIllegalThreadStateException();group.add(this);start0();if(stopBeforeStart){stop0(throwableFromStop);}}privatenativevoidstart0();。。。。。。略。。。。。这种方式实现多线程很简单,通过自己的类直接extendThread,并覆盖run()方法,就可以启动新线程并执行自己定义的run()方法。示例如下:publicclassMyThreadextendsThread{@Overridepublicvoidrun(){System.ou

4、t.println(currentThread().getName()+"====线程开始执行=====");try{sleep(3000);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(currentThread().getName()+"====线程执行结束=====");}5publicstaticvoidmain(String[]args){MyThreadmyt1=newMyThread();//创建线程1MyThreadmyt2=newMyThread();//创建线程2//启动线程myt

5、1.start();myt2.start();}}线程执行结果可能如下:Thread-0====线程开始执行=====Thread-1====线程开始执行=====Thread-0====线程执行结束=====Thread-1====线程执行结束=====一.实现Runnable接口实现多线程如果自己的类已经extends另一个类,就无法直接extendsThread,此时,必须实现一个Runnable接口,实例如下:publicclassMyRunnableimplementsRunnable{publicvoidrun(){System.out.println(Thread.current

6、Thread().getName()+"====线程开始执行=====");try{Thread.sleep(3000);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"====线程执行结束=====");}publicstaticvoidmain(String[]args){MyRunnablemyr=newMyRunnable();//Runnable无法创建实例,必须借助与ThreadThreadt1=newThread(myr)

7、;Threadt2=newThread(myr);t1.start();t2.start();}}如果需要启动一个线程,必须首先实例化一个Thread,并传入Runnable实例,调用start()方法启动线程;事实上,当传入一个Runnabletarget参数给Thread后,Thread的run()方法就会调用target.run()。看源码如下:。。。。。。略。。。。。publicThrea

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。