i=2
i=3
。。。
结果将一直打印出 I 的值。我们的意图是当在 while 循环中调用 sleep()时,另一个线程就将
起动,打印出 j 的值,但结果却并不是这样。关于 sleep()为什么不会出现我们预想的结果,
在下面将讲到。
2. 实现多线程
通过继承 class Thread 或实现 Runnable 接口,我们可以实现多线程
2.1 通过继承 class Thread 实现多线程
class Thread 中有两个最重要的函数 run()和 start()。
1) run()函数必须进行覆写,把要在多个线程中并行处理的代码放到这个函数中。
2) 虽然 run()函数实现了多个线程的并行处理,但我们不能直接调用 run()函数,而是通过调
用 start()函数来调用 run()函数。在调用 start()的时候,start()函数会首先进行与多线程相关
的初始化(这也是为什么不能直接调用 run()函数的原因),然后再调用 run()函数。
例 2:
publicclassTestThread extendsjava/lang/Thread.java.html" target="_blank">
Thread
{
privatestaticintthreadCount = 0;
privateintthreadNum = ++threadCount;
privateinti = 5;
publicvoidrun(){
while(true){
try{
java/lang/Thread.java.html" target="_blank">
Thread
.sleep(100);
}
catch(java/lang/InterruptedException.java.html" target="_blank">
InterruptedException
e){
java/lang/System.java.html" target="_blank">
System
.out.println("Interrupted");
}
java/lang/System.java.html" target="_blank">
System
.out.println("Thread " + threadNum + " = " + i);
if(--i==0) return;
}
}
>publicstaticvoidmain(java/lang/String.java.html" target="_blank">
String