java多线程学习详细总结

java多线程学习详细总结

ID:30768673

大小:272.29 KB

页数:20页

时间:2019-01-03

java多线程学习详细总结_第1页
java多线程学习详细总结_第2页
java多线程学习详细总结_第3页
java多线程学习详细总结_第4页
java多线程学习详细总结_第5页
资源描述:

《java多线程学习详细总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java多线程学习详细总结本文主要介绍Java多线程的知识资料,这里整理了详细的多线程内容,及简单实现代码,有需要的朋友可以参考下目录⑺卜]一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状态转换五线程调度六常用函数说明使用方式为什么要用join方法七常见线程名词解释八线程同步九线程数据传递本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。首先讲一下进程和线程的区别:进程:每个进程都有独立的代码和

2、数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含个线程。线程:同一类线程共享代码和数据空问,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。多进程是指操作系统能同时运行多个任务(程序)。多线程是指在同一程序中有多个顺序流在执行。在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。一、扩展java」ang.Thread类packagecom.multithread.learning;/***@f

3、uncton多线程学习*@author林炳文*@time2015.3.9*/classThreadlextendsThread{privateStringname;publicThreadl(Stringname)e.printStackTrace();}}{for(inti=0;i<5;i++)try{sleep((int)Math.random()catch(InterruptedExceptione)}}publicclassMain{publicstaticvoidmain(String[]args){Threadl

4、mThl=newThreadl(MAu);ThreadlmTh2=newThreadl(,,B,,);mThl.start));mTh2.start();}}输出:A运行:0B运行:0A运行:1A运行:2A运行:3A运行:4B运行:1B运行:2B运行:3B运行:4再运行一下:A运行:0B运行:0B运行:1B运行:2B运行:3B运行:4A运行:1A运行:2A运行:3A运行:4说明:程序启动运行main时候,java虚拟机丿』动一个进程,主线程main在main()调用时候被创建。随着调用MitiSay的两个对象的start方法

5、,另外两个线程也启动了,这样,整个应用就在多线程下运行。注意:start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable),什么时候运行是由操作系统决泄的。从程序运行的结果可以发现,多线程程序是乱序执行。因此,只有乱序执行的代码才有必要设计为多线程。Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留岀一定时间给其他线程执行的机会。实际上所有的多线程代码执行顺序都是不确定的,每次执行的结果都是随机的。但是start方法重复调用的话,会出现java.

6、lang.HlegalThreadStateException异常。ThreadlmThl=newThreadl(HAu);ThreadlmTh2=mThl;mThl.start();mTh2.start();输出:Exceptioninthread"main"java」ang」HegalThreadStateExceptionatjava」ang.Thread.start(UnknownSource)atcom.multithread」earning.Main.main(Main.java:31)A运行:0A运行:1A运行

7、:2A运行:3A运行:4二、实现java.Iang.Runnable接口/***@functon多线程学习*@author林炳文*@time2015.3.9*/packagecom.multithread.runnable;classThread2implementsRunnable{privateStringname;publicThread2(Stringname){this.name二name;}@Overridepublicvoidrun(){for(inti=0;i<5;i++){System.out.printl

8、n(name+”运行:"+i);try{Thread.sleep((int)Math.random()*10);}catch(InterruptedExceptione){e.printStackTrace();}}}}publicclassMain{publicstaticvoidmai

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

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

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