Core java经典教程十一.doc

Core java经典教程十一.doc

ID:52804197

大小:48.50 KB

页数:5页

时间:2020-03-30

Core java经典教程十一.doc_第1页
Core java经典教程十一.doc_第2页
Core java经典教程十一.doc_第3页
Core java经典教程十一.doc_第4页
Core java经典教程十一.doc_第5页
资源描述:

《Core java经典教程十一.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java多线程编程进程,即运行中的程序,多任务操作系统中并发的一个任务(CPU是分时间片执行多个进程的),线程,其本质是进程中顺序的执行流程,进程有独立的进程空间进程中的数据存放空间(对空间和栈空间)是独立的。线程没有独立的存放数据的空间,数据存储空间(堆空间)是共享的,线程间的栈空间是独立的,线程消耗的资源比进程小。线程,是进程(运行中的程序)中顺序的执行流程,进程可以划分出多个线程。JVM(java虚拟机)本身就是一个进程,java只能够申请创建线程。操作系统决定线程是否有优先级,独占式的操作系统中

2、系统会有优先级的概念,共享式的操作系统则不会优先级的。Java中的线程也是对象,线程类是Thread类,线程是操作系统创建并进行维护的资源,线程对象表示一个线程,本身不是线程。通过线程对象来申请创建,中止线程,访问底层的线程资源。线程包含了三部分,cpu资源,代码,数据存储空间。线程对象调用start()方法,线程对象就会向操作系统申请线程启动,除了申请的线程,还有main方法的线程,也就是主线程。注意:只有运行状态的线程才有机会执行代码,主线程的中止不会影响其他的正在运行中的线程,朱线程中止也就是ma

3、in()方法退出了。只有进程中的所有线程都中止时,进程(JVM进程)才会退出,只要有线程没有中止,进程就不会退出。线程编程的两种方法1,写一个类,继承Thread类,覆盖Thread类中继承来的run()方法,这样就写好了自定义的线程类。例:publicclassTest{publicstaticvoidmain(String[]args){Threadt=newA();t.start();}classAextendsThread{publicvoidrun(){...}}2,写一个类,实现Runabl

4、e接口,实现其中的run()方法。这种方法写好的类的对象需要作为线程类创建对象时构造方法的参数。例:publicclassTest{publicstaticvoidmain(String[]args){Runabler=newb();//目标对象Threadt=newThread(r);//用目标对象构造线程对象t.start();}classbimplementsRunable{publicvoidrun(){...}}Thread类的方法publicstaticvoidsleep(longmilli

5、s)throwsInterruptedException括号中以毫秒为单位,使线程停止一段时间,间隔期满后,线程不一定立即恢复执行。当main()运行完毕,即使在结束时时间片还没有用完,CPU也放弃此时间片,继续运行其他程序。try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace(e);}publicfinalvoidjoin()throwsInterruptedException表示其他运行线程放弃执行权,进入阻塞状

6、态,直到调用线程结束。实际上是把并发的线程变为串行运行。线程的优先级:1-10,越大优先级越高,优先级越高被OS选中的可能性就越大。(不建议使用,因为不同操作系统的优先级并不相同,使得程序不具备跨平台性,这种优先级只是粗略地划分)。注:程序的跨平台性:除了能够运行,还必须保证运行的结果。Publicstaticvoidfield()使当前线程马上交出执行权,回到可运行状态,等待OS的再次调用。PublicfinalBooleanisActive()验证当前线程是否是活动的,不管它是否正在运行。线程的生命

7、周期下面为线程中的7中非常重要的状态:(有的书上也只有认为前五种状态:而将“锁池”和“等待池”都看成是“阻塞”状态的特殊情况:这种认识也是正确的,但是将“锁池”和“等待池”单独分离出来有利于对程序的理解)初始可运行阻塞运行结束锁池等待队列①⑴②⑵③⑶run()方法运行结束start()OS分配CPUCPU时间片结束或调用yield()o.wait()等待锁标记o.notify()1,初始状态,线程创建,线程对象调用start()方法。2,可运行状态,也就是等待Cpu资源,等待运行的状态。3,运行状态,获

8、得了Cpu资源,正在运行状态。4,阻塞状态,也就是让出Cpu资源,进入一种等待状态,而且不是可运行状态,有三种情况会进入阻塞状态。1)如等待输入(输入设备进行处理,而CPU不处理),则放入阻塞,直到输入完毕,阻塞结束后会进入可运行状态。2)线程休眠,线程对象调用sleep()方法,阻塞结束后会进入可运行状态。3)线程对象2调用线程对象1的join()方法,那么线程对象2进入阻塞状态,直到线程对象1中止。5,中止状态,线程执行结束。所有线程都

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

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

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