zoukankan      html  css  js  c++  java
  • java关键字synchronized

    1、对于synchronized方法和synchronized块,一个线程访问时,其他线程可以访问此类的非synchronized方法或块,不能访问其他带synchronized的方法或块。

    举例如下:

    synchronized块:

    public class Thread2 {

    public void m4t1() {
    synchronized (this) {
    int i = 5;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ie) {
    ie.printStackTrace();
    }
    }
    }
    }

    public void m4t2() {
    synchronized (this) {
    int i = 5;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ie) {
    ie.printStackTrace();
    }
    }
    }
    }

    public static void main(String[] args) {
    final Thread2 myt2 = new Thread2();
    Thread t1 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t1();
    }
    }, "t1");
    Thread t2 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t2();
    }
    }, "t2");
    t1.start();
    t2.start();
    }
    }

    synchronized方法:

    public class Thread3 {

    public synchronized void m4t1() {

    int i = 5;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ie) {
    ie.printStackTrace();
    }
    }

    }

    public synchronized void m4t2() {

    int i = 5;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ie) {
    ie.printStackTrace();
    }
    }

    }

    public static void main(String[] args) {
    final Thread3 myt2 = new Thread3();
    Thread t1 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t1();
    }
    }, "t1");
    Thread t2 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t2();
    }
    }, "t2");
    t1.start();
    t2.start();
    }

  • 相关阅读:
    HDU 4122 Alice's mooncake shop
    win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题。取消安装。”处理方法
    [置顶] 《程序员,你伤不起》–读书笔记-序
    顺序查找的优化方法
    结构体的大小的计算与空间的优化--之基本类型
    poj 1836 Alignment
    HDU 4721 Food and Productivity (二分+树状数组)
    POJ 1724 最短路费用限制
    Java面试题之九
    Eclipse 支持jQuery 自动提示
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/5822358.html
Copyright © 2011-2022 走看看