import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Syn {
public static void main(String args[]){
Thread t=new Thread(new Ss());
t.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("I am main!");
}
}
class Ss implements Runnable{
public void run(){
System.out.println(Thread.currentThread());
}
}
总是从主线程开始 所以主线程会最先被创建 顺序执行到start 才开启新的子线程
t.start();表示给子线程创建一个栈了 只是处于就绪状态 还要等时间片来
先创建t了 然后主线程让出来 t就立刻获得了 cpu 可以开始执行了
所以这样可以控制先后顺序
Thread.sleep()写在哪里就是阻塞哪里 这里阻塞main方法里的执行
t.join()出现在哪里就是和某个线程合并 如出现在main方法里 就是和t和main合并了 两个栈变成一个栈