Solving philosopher's dining problem with multi-thread synchronization method