博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java核心技术 卷I 基础知识 学习笔记(9)
阅读量:4169 次
发布时间:2019-05-26

本文共 705 字,大约阅读时间需要 2 分钟。

参考:Java核心技术 卷I 基础知识 第十四章

多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。似乎有些风险,但是共享变量使线程之间的通信比进程之间的通信更有效、更容易。在有些操作系统中,与进程相比,线程更轻量级,创建、撤销一个线程比启动新进程的开销要小的多。

线程可以有的状态:new、runnable、blocked、waiting、timedwaiting、terminated。

守护线程,可以通过调用t.setDaemon(true)将线程转换为守护线程。守护线程唯一用途是为其他线程提供服务。

将静态方法声明为synchronized也是合法的,如果调用这种方法,该方法获得相关的类对象的内部锁。例如,如果Bank类有一个静态同步的方法,那么当该方法被调用时,Bank.class对象的锁被锁住,因此,没有其他线程可以调用同一个类的这个或者任何其他的同步静态方法。

内部锁和条件存在一些局限。包括:

  • 不能中断一个正在试图获得锁的线程
  • 试图获得锁时不能超市
  • 每个锁仅有单一的条件,可能是不够的

在代码中应该使用哪一种?Lock、Condition对象还是同步方法?

  • 最好既不使用Lock/Condition也不使用synchronized关键字。在许多情况下可以使用java.util.concurrent包中的一种机制,他会为你处理所有的加锁。
  • 如果synchronized关键字适合你的程序,那么尽量使用它,这样可以减少编写的代码数量,减少出错的几率。
  • 如果特别需要Lock/Condition结构提供的独有特性时,才使用Lock/Condition.

 

转载地址:http://wgyai.baihongyu.com/

你可能感兴趣的文章
配置Thunderbird支持msn邮箱,无需webmail插件(测试通过)
查看>>
乱撞解决word只能以安全模式启动
查看>>
Oracle外部表小例
查看>>
在VS.NET的VC++中运行控制台程序后暂停
查看>>
Linux下rz,sz与ssh,SecureCRT的配合使用
查看>>
Oracle EBS R12 - 以Excel查看输出格式为“文本”的请求时乱码
查看>>
DB2数据库常见问题汇总
查看>>
db2关闭命令行CLP自动提交
查看>>
db2像oracle一样使用hints(guidelines)
查看>>
db2中获取某个表/索引占用空间的大小
查看>>
db2 - 一个bigint问题
查看>>
Python 值传递和引用传递
查看>>
计算Windows下目录大小
查看>>
python web框架企业实战详解(第六期)\第三课时-css&bootstrap
查看>>
python web框架企业实战详解(第六期)\第三课时-ajax&jquery&webpy
查看>>
python web框架企业实战详解(第六期)\第二课时-pickle&__eq__
查看>>
python web框架企业实战详解(第六期)\第一课时-sorted&if&for
查看>>
python web框架企业实战详解(第六期)\第四课时-webpy&django
查看>>
db2 - DETACH & ATTACH PARTITION
查看>>
How is map() implemented internally in Python?
查看>>