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

  • 相关阅读:
    javascript基金会——鼠标事件,系统对话框,等等。
    面向对象的方式进行数据交换网络之间的差异
    A*寻路算法lua实现
    鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)
    JEECG移动解决方案
    JavaScript事件收集
    OSChina 的URL类的源代码重写过程
    正则表达式注意事项
    随着通信和编程,它是一门艺术系列3(沟通的目的)
    Snmp常用oid
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/5822358.html
Copyright © 2011-2022 走看看