hadoop07---synchronized,lock

Posted 672530440

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop07---synchronized,lock相关的知识,希望对你有一定的参考价值。

synchronized
锁是jvm控制的,控制锁住的代码块只能有一个线程进入。线程执行完了锁自动释放,抛出异常jvm会释放锁。

?synchronized的缺陷
1.如果一个线程被阻塞了,其余的线程就要一直等下去,Lock可以在线程阻塞的时候其他线程不用一直等下去。
2.同时读文件时候,其他线程也要等待,lock可以做到读的时候不加锁,写的时候枷锁。
3.synchronized不知道线程有没有成功获取到锁。Lock可以知道线程有没有成功获取到锁。

 

package cn.itcast_01_mythread.thread.testThread;

public class MySynchronized {
    
    //    synchronized也可以放在方法上面
    public static void main(String[] args) {
        final MySynchronized mySynchronized = new MySynchronized();
        final MySynchronized mySynchronized2 = new MySynchronized();
        new Thread("thread1") {
            public void run() {
                synchronized (mySynchronized) {
                    try {
                        System.out.println(this.getName()+" start");
                        int i =1/0;   //如果发生异常,jvm会将锁释放
                        Thread.sleep(5000);
                        System.out.println(this.getName()+"醒了");
                        System.out.println(this.getName()+" end");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
        new Thread("thread2") {
            public void run() {
                synchronized (mySynchronized) {         //争抢同一把锁时,线程1没释放之前,线程2只能等待
//                    synchronized (mySynchronized2) {    //如果不是一把锁,可以看到两句话同时打印
                    System.out.println(this.getName()+" start");
                    System.out.println(this.getName()+" end");
                    
                }
            }
        }.start();
    }
}

 

以上是关于hadoop07---synchronized,lock的主要内容,如果未能解决你的问题,请参考以下文章

重启集群造成块丢失问题org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtain block length for L

错误:线程“主”java.lang.UnsatisfiedLinkError 中的异常:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(L

Hadoop 2.7.6_03_HDFS原理

Hive性能优化

Windows配置本地Hadoop运行环境

Hadoop架构及集群