After careful investigation, we figured out that the query is running forever as we have kept the MAXDOP at the database level to 2. Now, this was very much needed for our server to perform well but it was not working against the statistics update query and was taking forever. This was really a catch 22 situation for us. Catch 22 = a dilemma or difficult circumstance from which there is no escape because of mutually conflicting or dependent conditions.
Finally, we figured out the workaround which was much simpler than we expected. As of SQL Server 2016 R2, now we can run FULLSCAN STATISTICS Update with MAXDOP keyword as well. We actually specified a higher number of MAXDOP for our FULLSCAN query and it did help us to improve the performance of that particular query.
As we had a total of 64 processors, we were able to specify MAXDOP = 8 for our stat update query.
USE AdventureWorks2014; GO UPDATE STATISTICS Production.Product([AK_Product_Name]) WITH FULLSCAN, MAXDOP=8; GO
Reference: Pinal Dave (https://blog.sqlauthority.com)