怎么锁定以对象,让别的线程访问不了这个对象的任何内容

如何锁定以对象,让别的线程访问不了这个对象的任何内容
当对象被琐时,别的线程用不了此对象的任何内容。
------解决思路----------------------
看上去你所说的锁定不像是线程同步的锁定,线程同步在锁被释放之后可以由另一个线程请求锁,而且如果其它线程如果没有打算请求锁定即使有线程A锁定了某个对象,其它不要求同步的线程依然可以使用这个对象。所以锁定只是一个设计(或者说约定)并不是一种能力。

如果你只是希望一个对象在这个终生只为一个线程使用,如果这个线程终止或线程池中的一个 worker 线程完成了一个请求之后这个对象就消失的话,那么我们可以考虑使用 ThreadLocal


  public class Context {
      private static final ThreadLocal contexts = new TheadLocal();
      public static final Context getCurrentInstance() {
              return (Context) contexts.get();
      }

      public static void init(Context me) {
              contexts.set(me);
      }

      public static void clear() {
               contexts.set(null);
      }

      Context() { // 设置为非 public,防止其它包直接访问它们。
      }
  }

   在你的请求的开始处初始化 Context,在结束处清理,比如 Web 程序的 filter 的开始初始化结束清理,在整个请求过程中(web 请求它就是使用一个线程池)保持一个请求使用自己专用的 context 实例。这种设计的好处也简单明了,在当前线程的任何地方直接 Context.getCurrentInstance() 都能得到这个对象,而不需要考虑传递参数到调用的深处,想象一下在 BO, DAO 各层保存一个唯一的 context 参数是件多麻烦的事情,缓存了之后容易错乱。

 // 初始化,框架层。
   Context ctx = new Context();
    Context.init(ctx);

// 使用它,业务层
   ctx = Context.getCurrentInstance();

 // 框架层清理
  Context.clear();

------解决思路----------------------
读写锁 ;同步代码块,wait+notify
------解决思路----------------------
楼主你所指的是线程同步问题吗?楼主可以把问题详细说明一下。
------解决思路----------------------
按照楼主的意思,应该直接锁住就可以了呀,是不是我理解不对?怎么锁定以对象,让别的线程访问不了这个对象的任何内容