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();
    }

  • 相关阅读:
    编程珠玑(续) 读书笔记 -(第三章 程序员的忏悔)
    java for循环
    java 中的 instanceof
    大脑学习
    voa 2015.4.29
    编程珠玑(续) 读书笔记 -(前言+第一章性能监视工具)
    voa 2015 / 4 / 27
    voa 2015 / 4 / 26
    背包问题 算法实现
    LCS 算法实现
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/5822358.html
Copyright © 2011-2022 走看看