一个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);一下,就能看到不同的输出了。