1、介绍一下Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,锁住了什么?

synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下四种:

  • 修饰一个代码块:作用于同一个对象,如果调用两个对象上的同步代码块,就不会进行同步;
  • 修饰一个方法:作用于同一个对象;
  • 修饰一个类:作用于整个类,如果两个线程调用同一个类的不同对象上的同步类,就会进行同步;
  • 修饰一个静态方法:作用于整个类。

2、介绍一下volatile?

volatile是java的关键词之一,使用volatile修饰的变量会强制将修改的值立即写入主存,主存中值的更新会使缓存中的值失效(非volatile变量不具备这样的特性,非volatile变量的值会被缓存,线程A更新了这个值,线程B读取这个变量的值时可能读到的并不是是线程A更新后的值);volatile会禁止指令重排,volatile具有可见性、有序性,不具备原子性。

3、锁有了解嘛,说一下Synchronized和lock

  • lock是接口;synchronized是关键字
  • lock是显示锁(即加锁和解锁的过程可见并且需要自己控制);synchronized是隐式锁
  • lock需要它的实现类来做到加锁和解锁,比如ReentrantLock或ReentrantReadWriteLock;synchronized直接用来修饰类、方法和代码块
  • lock通常需要使用try-catch-finally这种形式在finally中去unlock释放锁;synchronized不需要关注他的锁释放,代码块执行完毕或者报错都会释放锁
  • synchronized在读写锁方面没有lock灵活,比如ABC三个线程,两个读文件一个写文件,synchronized只能依次来加锁解锁,而Lock可以实现读共享
  • synchronized在1.6之前是重量级锁,性能远不如ReentrantLock,在1.6以后做了大幅的优化,引入了偏向锁,轻量级锁,自旋锁等机制
  • synchronized和ReentrantLock都属于可重入锁(锁可重复使用,线程可以进入任何一个它已经拥有的锁所同步着的代码块)

4、讲一讲Java里面的final关键字怎么用的?

  • 被final修饰的类不能被继承;
  • 被final修饰的方法不能被重写;
  • 被final修饰的变量是常量,值不能改变。

JavaSE_2_关键字的更多相关文章

  1. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  2. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  3. java面向对象中的关键字

    1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...

  4. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

  5. transient关键字的用法

    本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...

  6. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  7. Core Java 总结(关键字,特性问题)

    2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...

  8. Net中的常见的关键字

    Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...

  9. php多关键字查询

      php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...

随机推荐

  1. mycat的安装与配置

    前提:mycat安装前需先实现主从复制,主从复制不会的,请看 文章 .另外,配置前需关掉selinux. 一.此次测试环境总共有四台机: mycat: 10.0.0.20 mysql_master: ...

  2. shell分库备份

    分库备份企业实战题7:如何实现对MySQL数据库进行分库备份,请用脚本实现 #!/bin/bash MysqlUser=root PassWord=root Port= Socket="/u ...

  3. windows、Linux 测试服务器、电脑的某些个端口是否打开

    测试远程端口是否开放包括两种方法: 一. 命令行的形式 二.代码 先参考我的博客 windows.Linux 开放端口 一.命令行的形式 两个命令:telnet.nc(netcat) 两种网络层协议: ...

  4. 2、linux-compress and uncompresse

    1.单个文件 压缩 解压 gzip file1  gzip -d file1.gz或者gunzip file1.gz #file1文件即会被压缩为 file1.gz,file1原文件删除:解压后同样删 ...

  5. hdu1078

    #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; i ...

  6. Java静态导入

    Java静态导入 静态导入的语法是: import static ...; 静态导入的好处就是可以简化一些操作,例如System.out.println(…);就可以将其写入一个静态方法 import ...

  7. android build system resource links

    总体结构,参见这里:http://www.jayway.com/2012/10/24/a-practical-approach-to-the-aosp-build-system/ 一般应用的Andro ...

  8. 【mysql格式化日期】

    date_format(now(),'%Y-%c-%d'): 1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. DATE_FORMAT(date,format) format ...

  9. C习题练习

    #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> //比较俩个数的大小 //int max(int a, int b) {// int t ...

  10. [CentOS7] 通过vncviewer屏幕扩展

    方法一:通过vncserver来调整分辨率 这是博主最近才发现的,原来还可以直接通过在服务端通过设置vncserver来调整分辨率,方法如下: 接下来,我们要进行vncviewer屏幕扩展的设置: 点 ...