thanks to everyone for reply. all methods are working fine and good to overcome of this problem.
Actually I know the way how to overcome but I want it to some prevention methods for the same.
see actually whenever I faced this issue just kill all sleep thread and rerun the alter or drop will resolve it or any method you explain will also work.
but see all methods we need some downtime right and you know what does it means for production database.
main thing I observed that some earlier command/transaction which used that table and now they are in sleep mode and that's causes these situation again and again.
there should be some prevention method for the same .I am still looking for it.
one easy solution ,I am using currently is , I created a bash script which regular check (at interval of every minutes)
MySQL process list and if there is any thread i.e waiting for metadata lock and time exceed 30 sec
either it send an alert email or do all steps mentioned above to overcome of these situations.
I knew this is not complete solution ,but script always send me alert whenever database faced same situation.
Still I am looking for best solution ,whenever I got I will post here.