Deadlock_synchromized-Java_se

class Test implements Runnable
{
private boolean flag;
Test(boolean flag)
{
this.flag = flag;
}
public void run()
{
if(flag)
{
synchronized(MyLock.locka)
{
System.out.println("if..locka");
synchronized(MyLock.lockb)
{
System.out.println("if..lockb");
}
}
}
else
{
synchronized(MyLock.lockb)
{
System.out.println("else..lockb");
synchronized(MyLock.locka)
{
System.out.println("else..locka");
}
}
}
}
}
class MyLock
{
public static final MyLock locka = new MyLock();
public static final MyLock lockb = new MyLock();
}
class DeadLockTest
{
public static void main(String[] args)
{
Test a = new Test(true);
Test b = new Test(false);
Thread t1 = new Thread(a);
Thread t2 = new Thread(b);
t1.start();
t2.start();

}
}

时间: 2025-01-03 15:52:06

Deadlock_synchromized-Java_se的相关文章

JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方法之内. 作用上的区别: 1. 成员变量的作用是用于描述一类事物的公共 属性的. 2. 局部变量的作用就是提供一个变量给方法内部使用而已. 生命周期区别: 1. 随着对象 的创建而存在,随着对象的消失而消失. 2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作

JAVA_SE基础——29.构造函数

黑马程序员入学Blog... jvm创建Java对象时候需要调用构造器,默认是不带参数的.在构造器中,你可以让jvm帮你初始化一些参数或者执行一系列的动作. 它是对象创建中执行的函数,及第一个被执行的方法 特点: 1.函数名与类名相同. 2.不用定义返回值类型. 3.没有具体的返回值. P.S. 在构造函数前面加上返回值就只是一般函数了. 作用:给对象进行初始化. class Person{ private String name ; private int age ; //定义一个Person

JAVA_SE基础——23.类的定义

黑马程序员入学blog ... java 面向对象的语言 对象:真实存在的唯一的实物. 比如:我家的狗, 类: 实际就是对某种类型事物的共性属性与行为的抽取.  抽象的概念...   比如说:车     你知道我值的是哪辆车吗? 我们从小的时候就不断的接触很多的对象,我们的大脑就会把这些具备相同属性与行为的事物进行分类. 如果还不明白的话看下图: 下面的对象具备着类的基本属性(轮子.排气管.颜色..)  就可以称得上车了 . 类就如一张造汽车的图纸,一个抽象的概念. 在现实生活中就存在对象与类这

JAVA_SE基础——37.单例设计模式

本文继续介绍23种设计模式系列之单例模式. 我们在javaSE的基础学习中,会讲到:单例设计模式.模板设计模式.装饰者设计模式.观察者设计模式.工厂设计模式 我以后随着水平的提高,我会专门开个分类写设计模式的.现在请原谅我的知识面有限-- 设计模式→中的    "模式" 二字是什么意思.. 模式:模式就是解决 一类 问题的固定步骤 . 模式的概念最早起源于建筑行业.... 建房子的步骤都是一样子: 打地基-----> 浇柱子------->盖楼面--------->砌

JAVA_SE基础——56.包的创建

接下来我来给大家讲下--包 , 先看一段代码 class Demo1{ public static void main(String[] args) { System.out.println("这个是Demo1的main方法"); } } 然后再新建一个Java文件,然后类名也叫Demo1,但是文件名叫Demo2 class Demo1 { public static void main(String[] args) { System.out.println("这个是Demo

JAVA_SE基础——24.面向对象的内存分析

黑马程序员入学blog ... 接着上一章的代码: //车类 class Car{ //事物的公共属性使用成员变量描述. String name; //名字的属性 String color; //颜色属性 int wheel; //轮子数 //事物的公共行为使用函数描述. public void run(){ System.out.println(name+"飞快的跑起来啦..."); } } class Demo1{ public static void main(String[]

JAVA_SE基础新版day01学习笔记总结

###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应用举例 * 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔记本计算机.大型计算机等. * 应用举例 * 1:科学计算 * 2.数据处理 * 3.自动控制 * 4.计算机辅助设计 * 5.人工智能 * 6.多媒体应用 * 7.计算机网络 * ...

JAVA_SE基础——58.如何用jar命令对java工程进行打包

有时候为了更方便快捷的部署和执行Java程序,要把java应用程序打包成一个jar包.而这个基础的操作有时候也很麻烦,为了方便java程序员们能够方便的打包java应用程序,下面对jar命令进行介绍,并举出几个简单例子针对不同情况进行打包. jar命令用法: 在cmd命令窗口下输入jar,回车,就会提示改命令的用法: 打jar包: 需要使用到jdk的开发工具(jar.exe). jar文件的作用: 1. 方便用户快速运行一个项目. 2. 提供工具类以jar包的形式给别人使用. 如果使用jar包里

JAVA_SE基础——45.接口关系下的多态

接口关系下的多态和继承关系下的多态 相差无几,应该更简单些~ 多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象. 实现关系下的多态: 接口  变量  = new  接口实现类的对象. package day09; interface Dao{ //接口的方法全部都是非静态的方法. public void add(); public void delete(); } //接口的实现类 class UserDao implements Dao{ publ

JAVA_SE基础——15.循环嵌套

嵌套循环是指在一个循环语句的循环体中再定义一个循环语句结构,while,do-while,for循环语句都可以进行嵌套,并且可以互相嵌套,下面来看下for循环中嵌套for循环的例子. 如下: public class Circulation { public static void main(String[] args) { int i, j; // 定义两个循环变量 for (i = 1; i <= 9; i++) { // 外层循环 for (j = 1; j <= i; j++) { /