zoukankan      html  css  js  c++  java
  • java基础

    1.使用特殊域变量(volatile)实现线程同步
     
        a.volatile关键字为域变量的访问提供了一种免锁机制, 
        b.使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新, 
        c.因此每次使用该域就要重新计算,而不是使用寄存器中的值 
        d.volatile不会提供任何原子操作,它也不能用来修饰final类型的变量 
     
    2.同步代码块和同步方法的区别
    同步方法只能以当前类对象为锁,而同步代码块可以以任何对象为锁
    public class SynchronizeCode {
       public static void main(String[] args) {
           /************ 创建锁对象 ************/
           final Object lock = new Object();
           /************ 开启线程一 ************/
           new Thread() {
               public void run() {
                   while (true) {
                       synchronized (lock) {
                           System.out.print("同步");
                           System.out.println("代码");
                       }
                   }
               };
           }.start();
           /************ 开启线程二 ************/
           new Thread() {
               public void run() {
                   while (true) {
                       synchronized (lock) {
                           System.out.print("Synchronize");
                           System.out.println("Code");
                       }
                   }
               };
           }.start();
       }
    }
    在同步中,可以将某个对象设为锁,当持有锁时,则可以执行方法,反而,如果不持有锁,就会陷入阻塞的状态,等待上一个使用者释放锁,如果上一个使用者一直不释放锁,就会造成死锁
  • 相关阅读:
    docker 基础
    shell
    MySQL之MGR
    MySQL之读写分离
    MySQL主从复制
    MySQL之数据类型
    MySQL之索引与约束条件
    SQL语句进阶
    SQL语句初识
    Linux之MySQL安装
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/5857534.html
Copyright © 2011-2022 走看看