码迷,mamicode.com
首页 > 编程语言 > 详细

java基础

时间:2016-09-09 18:47:36      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

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();
   }
}
在同步中,可以将某个对象设为锁,当持有锁时,则可以执行方法,反而,如果不持有锁,就会陷入阻塞的状态,等待上一个使用者释放锁,如果上一个使用者一直不释放锁,就会造成死锁

java基础

标签:

原文地址:http://www.cnblogs.com/yzjT-mac/p/5857534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!