2016多线程的常用操作方法.doc

2016多线程的常用操作方法.doc

ID:59260868

大小:721.50 KB

页数:5页

时间:2020-09-08

2016多线程的常用操作方法.doc_第1页
2016多线程的常用操作方法.doc_第2页
2016多线程的常用操作方法.doc_第3页
2016多线程的常用操作方法.doc_第4页
2016多线程的常用操作方法.doc_第5页
资源描述:

《2016多线程的常用操作方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、课程名称:多线程的常用操作方法2、知识点2.1、上次课程的主要知识点多线程的实现。2.2、本次预计讲解的知识点线程的命名操作、线程的休眠、线程优先级。3、具体内容(★★★★★)线程的所有操作方法几乎都在Thread类中定义好了。3.1、线程的命名和取得从本质上来讲多线程的运行状态并不是固定的。所以来讲要想确定线程的执行,唯一的区别就在于线程的名称上。在起名的时候就应该尽可能避免重名,或者避免修改名称。在Thread类中提供有如下的方法可以实现线程名称的操作:·构造方法:publicThread(Runnabl

2、etarget,Stringname)·设置名字:publicfinalvoidsetName(Stringname);·取得名字:publicfinalStringgetName()。既然线程的执行本身是不确定的状态,所以如果要取得线程名字的话,那么唯一能做的就是取得当前的线程名字。所以在Thread类里面提供有这样的方法:publicstaticThreadcurrentThread()。范例:线程的命名和取得packagecn.mldn.demo;classMyThreadimplementsRunnabl

3、e{@Overridepublicvoidrun(){for(intx=0;x<10;x++){System.out.println(Thread.currentThread().getName()+",x="+x);}}}publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{MyThreadmt=newMyThread();newThread(mt,"线程A").start();newThread(mt).start();ne

4、wThread(mt).start();}}如果在设置线程对象时没有设置具体的名字,那么就采用一个默认的名字进行定义。范例:观察以下代码packagecn.mldn.demo;classMyThreadimplementsRunnable{@Overridepublicvoidrun(){System.out.println("MyThread线程类:"+Thread.currentThread().getName());}}publicclassTestDemo{publicstaticvoidmain(Str

5、ingargs[])throwsException{MyThreadmt=newMyThread();newThread(mt).start();//线程启动调用run()方法mt.run();//直接通过对象调用run()方法}}MyThread线程类:main(mt.run())MyThread线程类:Thread-0(newThread(mt).start())线程一定是依附于进程存在的,但是现在的进程在那里呢?每当使用java命令在JVM上解释某一个程序执行的时候,那么都会默认的启动一个JVM的进程,而主

6、方法只是这进程中的一个线程,所以整个程序一直都跑在线程的运行机制上。每一个JVM至少会启动两个线程:主线程、GC线程。3.2、线程的休眠如果要想让某些线程延缓执行,那么就可以使用休眠的方式来进行处理,在Thread类里面提供有如下休眠操作:·休眠方法:publicstaticvoidsleep(longmillis)throwsInterruptedException;如果休眠的时间没到就停止休眠了,那么就会产生中断异常。范例:观察休眠packagecn.mldn.demo;classMyThreadimplem

7、entsRunnable{@Overridepublicvoidrun(){for(intx=0;x<100;x++){try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+",x="+x);}}}publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsE

8、xception{MyThreadmt=newMyThread();newThread(mt,"线程A").start();newThread(mt,"线程B").start();newThread(mt,"线程C").start();}}以上的代码执行中感觉像是所有的线程对象都同时休眠了。但是严格来讲不是同时,是有先后顺序的,只不过这个顺序小一点而已。packagecn

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

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

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