use of Object o = new Object()
我用过-
对于线程同步,这是很有帮助的,因为使锁对象私有化会封装锁,这样客户端代码就无法获取它,但不知道其他用途。对象类不是抽象类的其他原因是什么?在哪种情况下我可以使用上面的代码?
- "拒绝服务攻击"?你这是什么意思?
- "保护对象不受拒绝服务攻击",但如何?
- 我通常只是用它来演示如何为Java/OOP新手创建新的对象。
- 我只是想说-如果类A使用内部锁进行同步,并且某些客户机在类A上获取锁,那么实例将无法满足客户机的要求。找不到另一种描述方法,如果您有其他技术名称,请编辑此。
- @falcon:"拒绝服务"是一个安全术语,与线程同步无关。
- @斯卡夫曼-如果另一个代码锁定了对象,这不是代码的安全性吗?
- @猎鹰:不,这与安全无关,这与安全有关。两件不同的事情。
- @Falcon Maby你是对的,但是Dos这个词"拒绝服务"有另一个含义,所以当你在错误的上下文中写它的时候,试图弄明白你的意思可能会非常困惑。
- @斯卡夫曼-嗯……知道了。。拆卸管路..谢谢:)
- 如果你想创建自己的锁,你可以使用Lockimho。即使使用对象进行同步,现在也没有那么有用。
- @法尔肯:我能理解你的意思。我想我没有把这看作是安全性,考虑到如果流氓代码现在在您的JVM中运行,并且它可以访问您的ClassLoader,并且可以访问您的对象,那么安全性实际上已经失败了。
- @亚当·佩恩特-谢谢,同意了。
- @Peter,synhcronized(object)有一个被忽视的方面,它可以在thread.stop()中生存,所以它的代码是真正关键的库代码,synchronized有点健壮。
- 可能重复了java.lang.object不是抽象对象的原因?
创建一个通用对象的主要实用工具是利用它的锁定功能(例如,wait()和notify())。但这可能就是您所说的"拒绝服务",因为使用这些方法可以帮助管理线程,并可能有助于防御DOS。(但这确实是应用程序特有的,而不是对象内这些方法的固有目的)
这里已经详细讨论了对象不抽象的原因:
为什么java.lang.object不是抽象的?