# homework11x02 **Repository Path**: chenaib/homework11x02 ## Basic Information - **Project Name**: homework11x02 - **Description**: 第十一阶段模块二作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-16 - **Last Updated**: 2021-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # homework11x01 ## 介绍 阶段11模块二作业 [homework.txt](homework.txt) ## 学习笔记 [diary/java_lession11_02.md](diary/java_lession11_02.md) ## 代码 ### 1. 为什么wait、nofity和nofityAll这些方法不放在Thread类当中 JAVA提供的锁是对象级别而不是线程级的,每个对象都有锁,通过线程获得. 若线程需要等待某些锁,那么调用对象中的wait()方法就有意义了. 如果wait方法定义在Thread类中,线程正在等待的是哪一个锁就不明显了.存放引用 wait方法,notify方法和notifyAll是锁级别的操作,把他们定义在Object类中因为锁属于对象. ### 2. 什么是Java内存模型 Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的, 屏蔽了各种硬件和操作系统的访问差异的, 保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范. 概念:JMM主要是指java线程之间的通信,也就是工作内存和主内存之间如何通信, 它涵盖了缓存、写缓存区、寄存器和其他的硬件编译器优化等内容. 实现:主要是通过重排序(编译器重排序,CPU内存重排序,CPU指令重排序)、三个同步原语(synchronize、volatile、final)、内存屏障构成的happen-before原则. ### 3. Java编程写一个会导致死锁的程序. 见[click this](code/DeadLock.java) ### 后端代码 [click this](code/DeadLock.java) # 测试 ***** ![homework.png](homework.png)