摘要:
运行结果: 以上结果说明,线程A在释放方法a的同步锁之前,是可以重新获得b方法的同步锁的。同一个线程拿到同一个对象的锁,它是可以进入另一个同步方法的,这就是锁的重入。以上代码仅仅是同一个线程在一个同步方法中去成功调用另一个同步方法,并且,锁的是同一个实例。那么,不同的线程拿同一把对象去加锁,会怎样进 阅读全文
摘要:
理论层面: 内置锁与互斥锁 修饰普通方法、修饰静态方法、修饰代码块 demo如下: jvm层面: 查看xx方法同步代码块字节码: 查看同步方法字节码: 任何对象都可以作为锁,那么锁信息又存在对象的什么地方呢? 存在对象头中。 对象头中的信息: Mark Word Class Metadata Add 阅读全文
摘要:
4.4 成员初始化 局部变量在使用之前必须初始化。 但是,若将基本类型设为一个类的数据成员,情况则会变得稍微有些不同。由于任何方法都可以初始化或使用那个数据,所以在正式使用前,若还是强迫程序员将其初始化为一个适当的值,就可能不是一种实际的做法。然而,若为其赋予一个垃圾值,同样 是非常不安全的。因此, 阅读全文
摘要:
4.1 用构建器自动初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 t h i s 关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 阅读全文
摘要:
1.安装scala IDEA下载Scala插件 IDEA->setting->Plugin->搜索Scala->选择Scala,然后, 2.删除火狐软件 sudo apt-get remove --purge firefox 3.拷贝压缩包,解压到工作目录 替换以下文件: 4.打开firefox解压 阅读全文
摘要:
9.将函数映射到集合 所有字符串列表转换为大写字母: map中传入一个函数: 如果想让函数产出一个集合而不是单个值的话,你可能想要将所有的值串接在一起。如果有这个要求,则用flatMap。 collect方法用于偏函数,那些并没有对所有可能的输入值进行定义的函数。它产出被定义的所有参数的函数值的集合 阅读全文
摘要:
1.主要的集合特质 2.可变和不可变集合 3.序列 4.列表 5.可变列表 6.集 7.用于添加或者去除元素的操作符 8.常用方法 9.将函数映射到集合 10.化简、折叠和扫描 11.拉链操作 12.迭代器 13.流 14.懒视图 15.与java集合的互操作 16.线程安全的集合 17.并行集合。 阅读全文
摘要:
1.扩展类 2.重写方法 3.类型检查和转换 4.受保护字段和方法 5.超类的构造 6.重写字段 7.匿名子类 8.抽象类 9.抽象字段 10.构造顺序和提前定义 11.Scala继承层级 12.对象相等性 1.扩展类 使用extends关键字,语法和java类似,java中的final声明类,代表 阅读全文
摘要:
1.包 2.作用域规则 3.串联式包语句 4.文件顶部标记法 5.包对象 6.包可见性 7.引入 8.任何地方都可以声明引入 9.重命名和隐藏方法 10.隐式引入 1.包 如下,Pack类名可以在任意位置以com.test.Pack访问到了。 2.作用域规则 所有父包中的内容都在作用域内。 3.串联 阅读全文
摘要:
1.单例对象 2.伴生对象 3.扩展类或特质的对象 4.apply方法 5.应用程序对象 6.枚举 1.单例对象 static没有静态方法或静态字段,通过object实现类似效果: 2.伴生对象 一个类,既有实例方法,又有静态方法,通过“伴生对象达到同样的目的: 类和它的伴生对象可以相互访问私有特性 阅读全文