线程——终止线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nliki/article/details/80240361

终止线程(stop)

线程中不推荐使用Thread.stop(),它会释放所有monitor。可能会导致数据不一致性。

例如:

   当我们记录多条数据的时候:
      数据1: Id=0,Name= Nliki;

     数据2: Id=1,Name= Nliki_1;

     数据3: Id=2,Name= Nliki_2;

     ……


当我们写入或者读取数据的时候,为了防止数据被多个线程修改,一般在写之前或者读之前对这个数据进行加锁。读的时候,进行读锁等待,确保你写完了才去读,这样就不会读到一个错误的数据,同样写也是一样。假如正在写入一条数据Id=0,Name=Nliki,在写之前我们都会加锁,这个时候呢正准备写入Name=Nliki,我们很暴力的使用Thread.stop()方法,会导致锁会释放掉,刚好这个时候有个线程在等待读取这个对象,就会导致这个线程能读进来,很可能导致读取的数据错误,这样错误是很难发现的,一般不会有什么异常或者错误。所以一般不推荐使用Thread.stop().






猜你喜欢

转载自blog.csdn.net/Nliki/article/details/80240361