How to handle lock timeout error in MySQL? I am getting below listed error many times in my application log.

2015-05-19 10:27:57,842 ERROR [Timer-3] [org.hibernate.util.JDBCExceptionReporter] Lock wait timeout exceeded; try restarting transactionCouldn't retrieve InnoDB stat
us due to underlying exception:

BEGIN NESTED EXCEPTION **
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException
MESSAGE: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation

STACKTRACE:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)


I know this error can be happen when one thread has locked particular row of table, and second thread is waiting for it and this waiting time exceed certain amount of time.

But how can I optimize MySQL Configuration or my code to overcome this situation?

I have already read this article about isolation level, and I have already set isolation level to READ COMMITTED. 

Is there any expert advice/solution rather than I have mentioned?

EDIT:
I have also increased lock_timeout_period.
This is not a MySQL configuration problem, it is an application problem.

You apparently have one connection hanging onto something for more than 50 seconds (the default for lock_wait_timeout).  I consider even 5 seconds to be much too long for an interactive system to hang onto something.

Find the other piece of code and rethink its logic.