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

  • 相关阅读:
    Python语法入门01
    计算机基础入门
    小白初入Python人工智能
    python编译器的安装和pycharm的安装
    一个简单的例子,让你理解依赖注入
    分分钟教会大家第一个Spring入门案例
    白牌交换机:理想,现状与未来
    2017下一代数据中心网络研究报告
    pica8公司和picOS
    OCP(open compute project)
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/5822358.html
Copyright © 2011-2022 走看看