2.2.15内置类与同步:实验2
来源:互联网 发布:高中数学算法基本语句 编辑:程序博客网 时间:2024/06/16 22:31
本例同步代码synchronized(class2)对class2上锁之后,其他线程只能以同步的方式调用class2的静态方法。
package cha02.execise31;/** * Created by sunyifeng on 17/10/9. */public class OutClass { // static class InnerClass1 { // public void method1(InnerClass2 innerClass2) { String threadName = Thread.currentThread().getName(); synchronized (innerClass2) { System.out.println(threadName + "进入InnerClass1的method1"); for (int i = 0; i < 10; i++) { System.out.println("i=" + i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(threadName + "离开InnerClass1的method1"); } } // public void method2() { String threadName = Thread.currentThread().getName(); System.out.println(threadName + "进入InnerClass1的method2"); for (int j = 0; j < 10; j++) { System.out.println("j=" + j); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(threadName + "离开InnerClass1的method2"); } } // static class InnerClass2 { // public synchronized void method1() { String threadName = Thread.currentThread().getName(); System.out.println(threadName + "进入InnerClass2的method1"); for (int k = 0; k < 10; k++) { System.out.println("k=" + k); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(threadName + "离开InnerClass2的method1"); } }}
package cha02.execise31;/** * Created by sunyifeng on 17/10/9. */public class Run { public static void main(String[] args) { final OutClass.InnerClass1 in1 = new OutClass.InnerClass1(); final OutClass.InnerClass2 in2 = new OutClass.InnerClass2(); // Thread t1 = new Thread(new Runnable() { @Override public void run() { in1.method1(in2); } },"T1"); // Thread t2 = new Thread(new Runnable() { @Override public void run() { in1.method2(); } }, "T2"); // Thread t3 = new Thread(new Runnable() { @Override public void run() { in2.method1(); } }, "T3"); // t1.start(); t2.start(); t3.start(); }}
输出结果:
T2进入InnerClass1的method2
T1进入InnerClass1的method1
j=0
i=0
i=1
j=1
i=2
j=2
i=3
j=3
i=4
j=4
i=5
j=5
i=6
j=6
i=7
j=7
j=8
i=8
j=9
i=9
T1离开InnerClass1的method1
T2离开InnerClass1的method2
T3进入InnerClass2的method1
k=0
k=1
k=2
k=3
k=4
k=5
k=6
k=7
k=8
k=9
T3离开InnerClass2的离开method1
阅读全文
1 0
- 2.2.15内置类与同步:实验2
- 2.2.14内置类与同步:实验1
- 内置类与同步
- 关于《Java多线程编程核心技术》P113页的2.2.15内部类与同步:实验2
- 操作系统实验2-互斥与同步
- web实验报告——表单与JSP内置对象
- asp.net 实验五 内置对象与缓存
- veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况
- C++实验 实验4 继承与派生类 2
- DirectShow音视频同步实验报告(2)
- 实验二 同步与异步write的效率比较
- 车机与手机同步实验(MIRROLINK)
- 2013-10-24 实验之信号量同步与互斥
- 实验2 类的定义与应用
- 内部类与异常类:实验2
- 实验二 JSP内置对象
- C++实验 实验2 指针与引用
- BGP synchronization 同步实验
- Ueditor富文本编辑器
- 高斯日记
- 转发与重定向的区别
- linux中的进程控制
- WdatePicker日期插件
- 2.2.15内置类与同步:实验2
- java 判断输入的是正数还是0还是负数(正数-10,负数+10)
- 若construct 2只如初见
- STL之Vector
- 微信测试号接入--URL配置
- spring-boot restful接口学习,postman工具
- STL之deque和其他容器
- 循环神经网络基础
- 2.2.14内置类与同步:实验1