sleep这个方法是需要一个long类型的参数的,表示休眠多少毫秒。你没有怎么行啊。
至于你的疑惑,首先要明白3个概念,线程的3中状态,就绪态,阻塞态,运行态。
所谓的多线程并不是指所有的线程“同时”运行。 而是有一个时间片轮转机制来控制谁上谁下的。
打个比方,现在有一个苹果(比喻cpu),4个小孩(4个线程),当每个小孩都调用start()之后,他们都进入了就绪态,然后不是说他们一起上去同时咬这个苹果,而是一个上去咬几口(他是运行态),其他的还是(就绪态),过一段时间之后,换一个上(至于换的是谁,根据优先级计算概率随机选择),然后再重复的一个一个上。
关于sleep方法,给一个参数8000,即mt1。sleep(8000),也就是我这个小孩运行到这条语句的时候要歇8秒,这个时候我就是阻塞态,在这8秒里面,即使轮到我上,我也不能上。
关于优先级,Thread有一个方法setPriority(int newPriority) ,你传个10表示优先级最高,传个1表示优先级最低,默认是5,Thread类给了常量来表示他们。 也就是说优先级高的上的机会大,低的上的机会小。
总结: 多线程不是指多个线程同时运行,而是根据优先级轮流运行,只是cpu的运行速度很快,有时候我们把他认为是同时运行。