2.2.14内置类与同步:测试1

本实验测试是在内置类中有两个同步方法,但使用的却是不同的锁,打印结果也是异步的

package com.cky.bean;

/**
 * Created by edison on 2017/12/9.
 */
public class OutClass {
    static class Inner {
        public void method1(){
            synchronized ("其他的锁") {
                for (int i = 0; i <= 10; i++) {
                    System.out.println(Thread.currentThread().getName() +" i="+i);
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        public synchronized  void method2() {
            for (int i = 11; i <=20 ; i++) {
                System.out.println(Thread.currentThread().getName() + " i="+i);
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
package com.cky.bean;

/**
 * Created by edison on 2017/12/9.
 */
public class Test2 {
    public static void main(String[] args) {
        OutClass.Inner inner = new OutClass.Inner();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                inner.method1();
            }
        }, "A");
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                inner.method2();
            }
        }, "B");
        t1.start();
        t2.start();
    }
}
B i=11
A i=0
B i=12
A i=1
B i=13
A i=2
B i=14
A i=3
B i=15
A i=4
B i=16

由于持有不同的对象监视器,所以打印结果就是乱序的。

时间: 2024-10-07 05:06:29

2.2.14内置类与同步:测试1的相关文章

基于内置类的原型扩展方法

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>基于内置类的原型扩展方法</title></head><body><script type="text/javascript"> var ary = [12, 23, 34, 12, 23, 34, 12, 23, 34, 12, 23, 34,

EXT心得--并非所有的items配置对象都属于EXT的内置类

之前我对EXT的items中未指明xtype的配置对象有一个错误的认识--即虽然某个items未指明它下面的某个组件的xtype,但这个组件肯定属性EXT的某个类.然而今天在查看actioncolumn的配置items时发现这个思想是错误的认识. 看以下代码 },{ header : "删除", xtype:'actioncolumn', //3.4.0/#!/api/Ext.grid.ActionColumn 未在当前版本找到该类.--ext4api Ext.grid.column.

Java多线程编程6--单例模式与多线程--使用静态内置类、(反)序列化、static代码块、enum枚举数据类实现

前面讲的用DCL可以解决多线程单例模式的非线程安全,虽然看下去十分完美,但还是有一些问题,具体分析看这篇:http://blog.csdn.net/ochangwen/article/details/51348078 当然用其他的办法也能达到同样的效果. 1.使用静态内置类实现单例模式 public class Singleton { /* 私有构造方法,防止被实例化 */ private Singleton() { } /* 此处使用一个内部类来维护单例 */ private static c

14 内置函数

主要内容: 内置函数:就是python给你提供,拿来直接使用的函数. 1. 作用域相关: locals()    返回当前作用域中的名字. globals()  返回全局作用域中的名字. def fn(): a = 10 print(locals()) #当前作用域中的内容,如果在全局作用域中,则显示全局作用域的内容. print(globals()) #全局作用域中的内容 print("今天内容很简单") fn() 2. 迭代器相关: range()    生成数据 for i in

14 内置函数(一)

13. 前 方 高能-内置函数 一 一. 本节主要内容: 1.  内置函数 什什么是内置函数? 就是python给你提供的. 拿来直接 用的函数, 比如print., input等等. 截 止到python版本3.6.2 python 一共提供了了68个内置函数. 他们就是python直接提供给我们的. 有 一些我们已经 用过了了. 有 一些还没有 用过. 还有 一些需要学完了了 面向对象才能继续学习的. 今天我们就认识 一下python的内置函数. abs() dict() help() mi

万物之源泉14 内置函数二

一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数# 计算n的n次方 #先用之前的函数办法 def func(n): return n**2 print(func(9)) #用lambda方法: a = lambda n : n*n print(a(9)) lambda表示的是匿名函数 不需要用def声明 语法: 函数名 = lambda 参数 : 返回值 而匿名函数返回的是lambda,所有函数都叫lambda 注意: 1.函数可以参数可以有多个,多个参数用逗号隔开 2.匿名函

内部类(嵌套类、内置类)访问规则、定义原则、静态内部类、匿名内部类

一.内部类 1.内部类的访问规则: 1.内部类可以直接访问外部类中的成员,包括私有.之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式为:外部类明.this 2.外部类要访问内部类,必须创建内部类对象. 2.访问格式 1.当内部类定义在外部类的成员位置上是,而且非私有,可以在外部其他类中 可以直接建立内部类对象 格式: 外部类明.内部类名 变量名=外部类对象.内部类对象: Outer.Inter in=new Outer().new Inner(); 2.当内部类在成员

5 python 内置类

__dict__ : 类的属性(包含一个字典,由类的数据属性组成) __doc__ :类的文档字符串 __name__: 类名 __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod) __bases__ : 类的所有父类构成元素(包含了以个由所有父类组成的元组) 原文地址:https://www.cnblogs.com/foremostxl/p/958872

flash 内置类的位置

C:\Program Files\Adobe\Adobe Flash CS4\Common\Configuration\ActionScript 3.0\projects\Flash\src\fl C:\Program Files\Adobe\Adobe Flash CS4\Common\Configuration\ActionScript 3.0\projects\Flash\src\fl C:\Program Files\Adobe\Adobe Flash CS4\Common\First