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: ...
随机推荐
- [多路dp]更难的矩阵取数问题
https://www.51nod.com/tutorial/course.html#!courseId=11&isCurrent=1 解题关键:1.注意i和j的最大取值都是n,k是i与j的和 ...
- Unity添加自定义快捷键——UGUI快捷键
在Editor下监听按键有以下几种方式: 自定义菜单栏功能: using UnityEngine; using UnityEditor; public static class MyMenuComma ...
- shell工具使用配置备忘
一.bash之vi mode.两种方式:set -o vi(只让bash自己进入vi模式)或 set editing-mode vi(让所有使用readline库函数的程序在读取命令行时都进入vi模式 ...
- 7、sraToolkit安装使用
参考:http://blog.csdn.net/Cs_mary/article/details/78378552 ###prefetch 参数解释 https://www.ncbi.nl ...
- PyQt中从RAM新建QIcon对象 / Create a QIcon from binary data
一般,QIcon是通过png或ico等图标文件来初始化的,但是如果图标资源已经在内存里了,或者一个zip压缩文件内,可以通过QPixmap作为桥梁,转换为图标. zf = zipfile.ZipFil ...
- Entity Framework Code-First(16):Move Configurations
Move Configurations to Separate Class in Code-First: By now, we have configured all the domain class ...
- Win10不能直接拖文件/Foxmail不能拖文件解决办法
在桌面新建一个文本文档 打开文本文档复制下面的文字然后保存. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\M ...
- 【转】如何配置EditPlus中Java运行环境,运行Java程序
如何配置EditPlus中Java运行环境,运行Java程序 http://jingyan.baidu.com/article/86112f13725e2e2736978711.html 分步阅读 E ...
- Apple Swift中文入门教程【转发】
1 简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS& ...
- CocoaPods常用操作命令
查看镜像: gem sources -l 删除镜像 gem sources --remove https://rubygems.org/ 添加镜像 gem sources -a https://gem ...