苏州seo公司排名,南京网站优化哪家好,曲阜网站建设,开发帮app下载1. 本周学习总结 2. 书面作业 1. 源代码阅读#xff1a;多线程程序BounceThread 1.1 BallRunnable类有什么用#xff1f;为什么代码中需要调用Thread.sleep进行休眠#xff1f; BallRunnable类实现Runnable接口#xff0c;支持多线程#xff1b;调用Thread.sleep进行休眠则… 1. 本周学习总结 2. 书面作业 1. 源代码阅读多线程程序BounceThread 1.1 BallRunnable类有什么用为什么代码中需要调用Thread.sleep进行休眠 BallRunnable类实现Runnable接口支持多线程调用Thread.sleep进行休眠则在规定时间内不参与参与到CPU竞争让线程休眠就可以看到小球的运动轨迹如果时间为0即Thread.Sleep(0)就触发操作系统立刻重新进行一次CPU竞争就看不见轨迹。 1.2 Ball.java只做了两件事这两件事分别是什么BallComponent对象是干什么的其内部的ArrayList有什么用程序运行过程中生成了几个BallComponent对象该程序使用了多线程技术每个小球是分别在不同的线程中进行绘制吗 实现小球的移动方法获得小球的坐标和大小BallComponent对象的作用是添加小球和画出小球ArrayList用于存放小球运行中生成了一个BallComponent对象是的每个小球是分别在不同的线程中进行绘制 2. 实验总结题集(多线程) 2.1 题目6-1(Thread)、6-3(Runnable-匿名内部类)。回答a)通过定义Runnable接口的实现类来实现多线程比继承自Thread类实现多线程有何好处b) 6-16-36-11实验总结。 定义Runniable接口比继承Thread类实现多线程的好处适合多个相同代码的线程去处理同一个资源的情况可以避免由于java的单继承特性带来的局限增强了程序的健壮性代码能够被多个线程共享代码与数据时独立的6-1实验总结 创建MyThread类对象时指定循环次数n再创建一个输出从0到n-1的整数的任务即可。 6-3实验总结 创建代表任务的Runnable实现类的对象在任务里面写要求的三行输出。 6-11实验总结 这个题与6-1相似就是要多实现一个Runnable接口。 2.2 使用Lambda表达式改写6-3 改写如下 Thread t1 new Thread (( ) - {System.out.println(mainThreadName);System.out.println(Thread.currentThread().getName());System.out.println(Arrays.toString(getClass().getInterfaces()));}); 2.3 题目6-2Runnable与停止线程。回答a)需要怎样才能正确地停止一个运行中的线程b)6-2实验总结。 a不能使用stop()!!!stop()方法已经被废弃可以使用共享变量的方式共享变量可以被多个执行相同任务的线程用来作为是否中断的信号通知中断线程的执行也可以使用interrupt方法终止线程这种方法用于线程阻塞时终止线程。 b)public void stopMe();和public void sendWord(String word)方法就编写语句flag true;和this.word word;就可以实现主要是run()方法对word包含alien按格式进行输出要注意加入while(!flag)语句来判断程序的执行或终止。 3. 互斥访问 3.1 修改TestUnSynchronizedThread.java源代码使其可以同步访问。(关键代码截图需出现学号) 4. 互斥访问与同步访问 完成题集6-4(互斥访问)与6-5(同步访问) 4.1 除了使用synchronized修饰方法实现互斥同步访问还有什么办法可以使用synchronized实现互斥同步访问使用代码说明请出现相关代码及学号 public static void addId() {synchronized (Counter.class) {id;}
} 用synchronized的同步代码块实现互斥同步访问 4.2 同步代码块与同步方法有何区别 同步代码块 即有synchronized关键字修饰的语句块。 被该关键字修饰的语句块会自动被加上内置锁从而实现同步 方法如下 synchronized(object){ } 同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁当用此关键字修饰方法时 内置锁会保护整个方法。在调用该方法前需要获得内置锁否则就处于阻塞状态。 方法 public synchronized void save(){} 4.3 实现互斥访问的原理是什么请使用对象锁概念并结合相应的代码块进行说明。当程序执行synchronized同步代码块或者同步方法时线程的状态是怎么变化的 原理对象锁在程序中每个对象都有一把锁只有获得了对象锁才能执行相应的synchronized代码块或者方法,共享资源在一个时间段内只允许一个线程访问访问完了另一个线程才能访问运用synchronized关键字代码如下; class Counter {private static int id 0;public synchronized static void addId() {id;}public synchronized static void subtractId() {id--;}public static int getId() {return id;}
} 某一线程竞争获得对象锁其余线程在等待池中等待线程释放对象锁当线程释放对象锁其余线程又开始竞争对象锁直到程序结束 4.4 Java多线程中使用什么关键字实现线程之间的通信进而实现线程的协同工作 使用wait ()、notify()、notifyAll()关键字实现线程之间的通信 5. 线程间的合作生产者消费者问题 5.1 运行MyProducerConsumerTest.java。正常运行结果应该是仓库还剩0个货物。多运行几次观察结果并回答结果正常吗哪里不正常为什么 两次放入取出相同但结果却不一样因为producer和consumer的存取速度不一致线程之间没有合作就会产生错乱 5.2 使用synchronized, wait, notify解决该问题(关键代码截图需出现学号) 6. 面向对象设计作业-图书馆管理系统 6.1 系统的功能模块表格表格中体现出每个模块的负责人。 6.2 运行视频 6.3 讲解自己负责的模块并粘贴自己负责模块的关键代码出现学号及姓名。 3.码云及PTA 3.1. 码云代码提交记录 3.2 截图多线程PTA提交列表 3.3 统计本周完成的代码量 周数行数新增行数文件数新增文件数第一周393999第二周278239189第三周4311533315第四周894182519第五周11542606716第六周13542007912第七周1463109856第八周177631310116第九周19031271065第十周213623312216第十一周286172514624转载于:https://www.cnblogs.com/201621123065guo/p/7918418.html