JavaSE_2_关键字
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_关键字的更多相关文章
- 作为一个新手的Oracle(DBA)学习笔记【转】
一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- java面向对象中的关键字
1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...
- 关于javascript中的this关键字
this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Java关键字:static
通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...
- Core Java 总结(关键字,特性问题)
2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...
- Net中的常见的关键字
Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...
- php多关键字查询
php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...
随机推荐
- Mysql ExcuteNonQuery
ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执 ...
- arguments详解
arguments 是什么? 是一个对象,一个 很像数组的对象 arguments内容是什么? 1是函数运行时的实参列表 2收到实参收集起来,放到一个arguments对象里 在词法分析中,首先按形参 ...
- 关于JAVA中的回调接口传值机制
详见博文http://blog.csdn.net/xiaanming/article/details/8703708
- JAVA相关资料
http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ http://www.cnblo ...
- redis系列:通过队列案例学习list命令
前言 这一篇文章将讲述Redis中的list类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了. 项目Github地址:https://github.com/rainbowda/learn ...
- HTML5+JavaScript动画基础 完整版 中文pdf扫描版
<HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...
- MAC电脑下Pycharm新建模板默认添加作者时间等信息
在pycharm使用过程中,对于每次新建文件的shebang行和关于代码编写者的一些个人信息快捷填写,使用模板的方式比较方便. 方法如下: 1.打开pycharm,选择Pycharm-preferen ...
- 从零开始安装 Ambari (1) -- 安装前的准备工作
Ambari 没有简单的 .tar.gz 结尾的包(反正我找到).apache 官网提供的安装方法,是要下载源码,自己编译成安装包安装.说明文档还不够细.编译的时候是用 maven,照理来说不应该会失 ...
- Docker 启动配置和远程访问
1. 添加Docker 启动时的配置: vi /etc/default/docker 添加: DOCKER_OPTS=" --label name=dockerServer1 -H ...
- Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)
managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...