如果 num 没有自增操作,线程内的 while 循环,就变成死循环了,线程永远不会结束运行了。
楼主的 if 条件的意思,应该是,当 num 是奇数时 输出num并进行自增操作。但是,当 num 自增过后就变成偶数了,变成偶数后,if 条件无法满足,所以,num 无法进行输出和自增操作,while 循环的条件永远满足,变成了死循环。
楼主的代码除了 if 条件会造成死循环这个问题之外,还有一个问题就是,while 条件中的 num 变量,没有处于临界区内,不受多线程访问的保护。
在多线程并发的情况下,有一定概率产生线程安全的问题,也就是说,lock 临界区内的代码,有一定的概率会执行超过100次(假使每次执行num都自增1的情况下)。