import java.util.concurrent.TimeUnit;

class Phone//Phone.java ---> Phone.class     Class.forName();
{
public static synchronized void sendEmail()throws Exception
{
TimeUnit.SECONDS.sleep();
System.out.println("*****sendEmail");
}
public synchronized void sendSMS()throws Exception
{
System.out.println("*****sendSMS");
}
public void sayHello()throws Exception
{
System.out.println("*****sayHello");
}
} /**
* @auther cxy
* 8 lock
*1 标准访问,请问先打印邮件还是短信
*2 暂停4秒钟在邮件方法,请问先打印邮件还是短信
*3 新增普通sayHello方法,请问先打印邮件还是hello
*4 两部手机,请问先打印邮件还是短信
*5 两个静态同步方法,同一部手机,请问先打印邮件还是短信
*6 两个静态同步方法,2部手机,请问先打印邮件还是短信
*7 1个静态同步方法,1个普通同步方法,同一部手机,请问先打印邮件还是短信
*8 1个静态同步方法,1个普通同步方法,2部手机,请问先打印邮件还是短信
*
* * 一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,
* * 其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法
* *
* * 锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法
*
* * 加个普通方法后发现和同步锁无关
*
* * 换成两个对象后,不是同一把锁了,情况立刻变化。
*
* * synchronized实现同步的基础:Java中的每一个对象都可以作为锁。
* * 具体表现为以下3种形式。
* * 对于普通同步方法,锁是当前实例对象,锁的是当前对象this,
* * 对于同步方法块,锁是Synchonized括号里配置的对象。
*
* * 对于静态同步方法,锁是当前类的Class对象。
*/
public class Lock8Demo05
{
public static void main(String[] args) throws InterruptedException
{
Phone phone = new Phone();
Phone phone2 = new Phone(); new Thread(() -> {
try
{
phone.sendEmail();
} catch (Exception e) {
e.printStackTrace();
}
},"A").start(); Thread.sleep(); new Thread(() -> {
try
{
//phone.sendSMS();
//phone.sayHello();
phone2.sendSMS();
} catch (Exception e) {
e.printStackTrace();
}
},"B").start(); }
}

可以看代码进行修改

static修饰锁,锁住了当前类对象,没有修饰则锁定的是当前对象

java锁分析的更多相关文章

  1. Java锁-Synchronized深层剖析

    Java锁-Synchronized深层剖析 前言 Java锁的问题,可以说是每个JavaCoder绕不开的一道坎.如果只是粗浅地了解Synchronized等锁的简单应用,那么就没什么谈的了,也不建 ...

  2. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  3. Java锁的种类

    转载自:---->http://ifeve.com/java_lock_see/ Java锁的种类以及辨析锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchroniz ...

  4. JAVA 可视化分析工具 第12节

    JAVA 可视化分析工具  第12节 经过前几章对堆内存以及垃圾收集机制的学习,相信小伙伴们已经建立了一套比较完整的理论体系!那么这章我们就根据已有的理论知识,通过可视化工具来实践一番. 我们今天要讲 ...

  5. JAVA 锁之 Synchronied

    ■ Java 锁 1. 锁的内存语义 锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循 Happens-before 原则(锁规则:解锁必然发生在随后的加锁之前) ...

  6. Java 锁的学习

    个人学习整理,所有资料均来源于网络,非原创. 死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用.请求与保持条件(Hold and wait):已经得 ...

  7. JAVA锁和volatile的内存语义&volatile的使用场景

    JAVA锁的内存语义 当线程释放锁时,JMM(Java Memory Model)会把该线程对应的本地内存中的共享变量刷新到主内存中. 当线程获取锁时,JMM会将该线程对应的本地内存置为无效.从而使得 ...

  8. 转 : 深入解析Java锁机制

    深入解析Java锁机制 https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw%3D%3D&mid=2247485524&idx=1&s ...

  9. 性能监控工具以及java堆分析OOM

      一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每 ...

随机推荐

  1. setjmp与longjmp的分析

    #include <setjmp.h> int main(int argc, const char* argv[]) {   jmp_buf buf = {0,}; int k = 0; ...

  2. leetcode 1041——困于环中的机器人

    描述: 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方.机器人可以接受下列三条指令之一: "G":直走 1 个单位 "L":左转 90 度 &quo ...

  3. Java随机访问文件

    使用随机访问文件,我们可以从文件读取以及写入文件.使用文件输入和输出流的读取和写入是顺序过程.使用随机访问文件,可以在文件中的任何位置读取或写入.RandomAccessFile类的一个对象可以进行随 ...

  4. socket API CSocket CAsyncSocket 用法及区别

    要进行网络编程就要和Socket打交道,Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别.虽然同步好用,不费劲,但不能满 ...

  5. Java多线程sleep和wait的区别,总结得非常好。

    我们都知道sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行,那么这两种方法在多线程中的表现形态,它们各有什么区别呢? 可以总结为以下几点. 使用上 从使用角度看,slee ...

  6. useradd -帐号建立或更新新使用者的资讯

    总览 SYNOPSIS useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group ...

  7. java.lang.ThreadLocal的作用和原理?列举在哪些程序中见过ThreadLocal的使用?

    java.lang.ThreadLocal的作用和原理?列举在哪些程序中见过ThreadLocal的使用? 说明类java.lang.ThreadLocal的作用和原理.列举在哪些程序中见过Threa ...

  8. 使用osgearth2.9 rex引擎在Qt中黑屏的问题修复

    将osgUtil::RenderStage.cpp中的下列红色代码注释重新编译即可: if ( !colorAttached ) { setDrawBuffer( GL_NONE, true ); s ...

  9. python编程学习day04

    1.函数名是变量名 “=”是内存指向,等号赋值操作,内存指向操作 变量——可赋值,可作为列表元素 函数名可以作为返回值返回 函数名可作为参数传递 2.闭包 内层函数使用了外层函数的变量 作用:可以让一 ...

  10. Download Blackarch Linux

    https://www.blackarch.org/