标签:消费 counter 系统 面向对象 看不见 sub 多个 线程 print
BallRunnable类实现Runnable接口,支持多线程;调用Thread.sleep进行休眠则在规定时间内不参与参与到CPU竞争,让线程休眠就可以看到小球的运动轨迹,如果时间为0即Thread.Sleep(0),就触发操作系统立刻重新进行一次CPU竞争就看不见轨迹。
是的每个小球是分别在不同的线程中进行绘制
增强了程序的健壮性,代码能够被多个线程共享,代码与数据时独立的
6-1实验总结:
创建MyThread类对象时指定循环次数n,再创建一个输出从0到n-1的整数的任务即可。
6-3实验总结:
创建代表任务的Runnable实现类的对象,在任务里面写要求的三行输出。
6-11实验总结:
这个题与6-1相似,就是要多实现一个Runnable接口。
改写如下:
Thread t1 new Thread (( ) - >{
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(getClass().getInterfaces()));
});
a)不能使用stop()!!!stop()方法已经被废弃;可以使用共享变量的方式,共享变量可以被多个执行相同任务的线程用来作为是否中断的信号,通知中断线程的执行;也可以使用interrupt方法终止线程,这种方法用于线程阻塞时终止线程。
b)public void stopMe();和public void sendWord(String word)方法就编写语句flag = true;
和this.word = word;
就可以实现,主要是run()方法,对word包含alien按格式进行输出,要注意加入while(!flag)
语句来判断程序的执行或终止。
完成题集6-4(互斥访问)与6-5(同步访问)
public static void addId() {
synchronized (Counter.class) {
id++;
}
}
用synchronized的同步代码块实现互斥同步访问
同步代码块 :
即有synchronized关键字修饰的语句块。
被该关键字修饰的语句块会自动被加上内置锁,从而实现同步
方法如下:
synchronized(object){
}
同步方法 :
即有synchronized关键字修饰的方法。
由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,
内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。
方法:
public synchronized void save(){}
原理:对象锁,在程序中,每个对象都有一把锁,只有获得了对象锁,才能执行相应的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;
}
}
某一线程竞争获得对象锁,其余线程在等待池中等待线程释放对象锁,当线程释放对象锁其余线程又开始竞争对象锁,直到程序结束
使用wait ()、notify()、notifyAll()关键字实现线程之间的通信
两次放入取出相同,但结果却不一样;因为producer和consumer的存取速度不一致,线程之间没有合作就会产生错乱
周数 | 行数 | 新增行数 | 文件数 | 新增文件数 |
---|---|---|---|---|
第一周 | 39 | 39 | 9 | 9 |
第二周 | 278 | 239 | 18 | 9 |
第三周 | 431 | 153 | 33 | 15 |
第四周 | 894 | 182 | 51 | 9 |
第五周 | 1154 | 260 | 67 | 16 |
第六周 | 1354 | 200 | 79 | 12 |
第七周 | 1463 | 109 | 85 | 6 |
第八周 | 1776 | 313 | 101 | 16 |
第九周 | 1903 | 127 | 106 | 5 |
第十周 | 2136 | 233 | 122 | 16 |
第十一周 | 2861 | 725 | 146 | 24 |
201621123065《JAVA程序设计》第11周学习总结
标签:消费 counter 系统 面向对象 看不见 sub 多个 线程 print
原文地址:http://www.cnblogs.com/201621123065guo/p/7918418.html