一个java线程的小例子
正在学java线程,书上说,这个线程由于调用了pp.join()所以说在main线程计数到达100前,是双线程交替执行,main到达100后就只有别的线程执行,但是在我电脑上运行的是,main在一开始以迅雷不及掩耳盗铃之势就100了,没别的线程啥事儿,后来就单单是其他线程在执行。为什么啊,跟我电脑有关吗?
Java code
public class JoinThread
{
public static void main(String[] args)
{
ThreadTest t=new ThreadTest();
Thread pp=new Thread(t);
pp.start();
int i=0;
while(true)
{
if(i==100)
{
try
{
pp.join();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
System.out.println("main Thread " + i++);
}
}
}
class ThreadTest implements Runnable
{
public void run()
{
String str=new String();
int i=0;
while(true)
{
System.out.println(Thread.currentThread().getName()+ " " + i++);
}
}
}
------解决方案--------------------首先声明 本人新手
如有错误 概不负责
把100 改大点,比如1000
------解决方案--------------------pp.start();不代表线程马上被执行~~而是等待资源执行~~~
if(i==100) 也是到 100 才执行pp.join()
join 方法的作用是使得本来异步执行的线程变成同步执行~~~
输出结果没啥问题~~~
------解决方案--------------------100太小了,其实题目的意思是想让你看到2个线程开始是交替执行的,当main中的i到100的时候main等待另一个线程执行,知道等待的线程执行完了才继续main的执行。
由于100太小了,还没轮到第二个线程执行,main就开始等待了,所以输出楼主这样的结果。
或者你可以在main中i==50的时候Thread.sleep(10);一下,就能看到不同的输出了。