标签:executor 证明 3.1 produce commit 内容 记录 dba 自己
参考资料
多线程参考文件
本次PTA作业题集多线程
实现了Runnable接口 支持多线程
在类中的run方法里通过循环调用小球的move函数和reprint 函数 实现球的轨迹
使用Thread.sleep 让线程可以进入休眠状态 是为了延缓完成时间 如果不进行休眠会很快完成 我们就不能看的到小球的移动
Ball.java:
1.为了实现小球的移动的方法定义了函数move
2.为了得到小球的大小和坐标位置 定义了函数getShape
BallComponent对象:
添加、画出一个小球
ArrayList用来存放添加的小球
只生成了一个BallComponent对象
没进行一次start addball就会启动一个新线程 所以 每个小球是在不同的线程里完成的
并回答:a)通过定义Runnable接口的实现类来实现多线程程序比通过继承自Thread类实现多线程程序有何好处?b) 6-1,6-3,6-11实验总结。
a:
在java 中只能继承一个父类 因此在实现接口的方法可以避免局限
使用Runnable 接口适合于资源的共享
b:
这个题是使用了匿名内部类实现Runnable接口的run方法 获取当前线程的名字要用
Thread.currentThread().getName()
PrintTask这个题 就是要注意类名和输出的标识信息
其他的和6.1相似
Thread t1 = new Thread(() -> { System.out.println(mainThreadName); System.out.println(Thread.currentThread().getName()); System.out.println(Arrays.toString(Thread.class.getInterfaces())); });
我们在Thread类里可以用一个stop()方法 来终止线程 但是因为这个放回将会执行到一般的线程强行终止所以我们用一个标志来终止线程 一般采用一个boolean类这样 通过while 语句来达到终止线程的作用
参考资料:Java多线程之Executor、ExecutorService、Executors、Callable、Future与FutureTask
完成题集6-4(互斥访问)与6-5(同步访问)
还可以通过synchornized同步代码块 来实现
同步方法直接在方法名前面加synchonrized
关键字来实现加锁
但是同步代码块 是在方法上加关键字synchonrized
同步方法的性能不如同步代码块
原理:
实现互斥访问的原理是程序通过给共享资源上锁 让给定时间内只允许一个线程来访问共享资源
第二行结果是间隔5秒才打印的,由于synchronzied实现了互斥,且只有sc这个对象锁,所以当第一个线程锁住了sc,而第二个线程里面也是通过sc去访问run()方法,所以必须等第一个线程执行完对象的方法时才能获得对象锁。因此必须隔5秒钟才能执行第二个线程
synchronized 关键字
wait/notify方法
volatile关键字
不正常 最后还有出现货物有剩余的情况 因为生产和出库的存取的速度是不一样的 从而让剩余的货物结果显示异常
实验任务书中的题目6:单元测试使用JUnit4。
使用JUnit4对两个排序算法的排序时间进行比较,并截图。
题目集:多线程
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
必须出现几个要素:提交日期-用户名(姓名与学号)-不提交说明
需要有两张图(1. 排名图。2.PTA提交列表图)
需要将每周的代码统计情况融合到一张表中。
观看相关调试视频
参考资料:Eclipse 的一些调试技巧
201621044079 韩烨 week11-作业11-多线程
标签:executor 证明 3.1 produce commit 内容 记录 dba 自己
原文地址:http://www.cnblogs.com/HYSOUL/p/7965805.html