码迷,mamicode.com
首页 > 编程语言 > 详细

作业11-多线程

时间:2017-12-02 22:16:03      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:思维导图   任务   bounce   不能   导致   做了   休眠   同步代码块   实现   

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容。

技术分享图片

2. 书面作业

本次PTA作业题集多线程

1. 源代码阅读:多线程程序BounceThread

1.1 BallRunnable类有什么用?为什么代码中需要调用Thread.sleep进行休眠?

1.BallRunnable类实现了Runnable接口,使程序实现了多线程,从而可以为线程指派任务。
2.调用Thread.sleep进行休眠的目的是为了先冻结当前线程,让其他的线程有机会优先被执行。

1.2 Ball.java只做了两件事,这两件事分别是什么?BallComponent对象是干什么的?其内部的ArrayList有什么用?程序运行过程中,生成了几个BallComponent对象?该程序使用了多线程技术,每个小球是分别在不同的线程中进行绘制吗?

  1. Ball.java实现小球的x,y轴坐标和移动的具体方法。
  2. Ball.java实现小球的具体大小,并用ArrayList存储。

2. 实验总结:题集(多线程)

2.1 题目:Thread、PrintTask、Runnable与匿名内部类。

并回答:a)通过定义Runnable接口的实现类来实现多线程程序比通过继承自Thread类实现多线程程序有何好处?b) 6-1,6-3,6-11实验总结。
a):Java无法支持多继承,所以一个类可以实现多个不同的接口,但却不能同时继承多个不同的父类,因此通过定义Runnable接口的实现类来实现多线程程序可以规避继承的局限性。
b):6-1通过编写一个My Thread类通过继承Thread来实现的
6-3通过使用匿名内部类来实现Runnable接口的run方法来完成该程序,其中在获取当前线程的名字时要调用Thread.currentThread.getname()来获得
6-11通过定义Runnable接口的实现类完成,此题为单线程。

2.2 使用Lambda表达式改写6-3

技术分享图片

2.3 题目:6-2(Runnable与停止线程)。回答:需要怎样才能正确地停止一个运行中的线程?

首先,在Thread中有一个stop()的方法可以来结束进程,但因为强制停止会导致代码逻辑的不完整。
所以,我们可以使用退出标志,来使线程正常退出,或者使用interrupt方法中断线程。

3. 互斥访问

3.1 修改TestUnSynchronizedThread.java源代码使其可以同步访问。(关键代码截图,需出现学号)

技术分享图片

4. 互斥访问与同步访问

完成题集6-4(互斥访问)与6-5(同步访问)

4.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法可以使用synchronized实现互斥同步访问,使用代码说明(请出现相关代码及学号)?

4.2 同步代码块与同步方法有何区别?

4.3 实现互斥访问的原理是什么?请使用对象锁概念并结合相应的代码块进行说明。当程序执行synchronized同步代码块或者同步方法时,线程的状态是怎么变化的?

4.4 Java多线程中使用什么关键字实现线程之间的通信,进而实现线程的协同工作?

作业11-多线程

标签:思维导图   任务   bounce   不能   导致   做了   休眠   同步代码块   实现   

原文地址:http://www.cnblogs.com/1613HZX/p/7955530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!