线程两种方法:
(外部类)
1、class MyThread extends Thread{} 启动:在主线程中启动new MyThread().start();
思考:如果在主线程中用new Thread(new MyThread()).start();可以,thread已经实现runnable,
2、class MyRunnable implements Runnable{}启动:在主线程中启动 new Thread(new MyRunnable).start();
一般推荐用第一种,Thread里所有方法都可以在第一种里面调用他。如getName,setName;
(匿名内部类)
1、new Thread(//创建一个thread类的子类,重写run方法,并且创建这个类的对象,调用了start()方法。
public void run(){
}
).start();
2、new Thread(new Runnable(){//创建一个runnable接口实现类对象,把这个对象传入thread类的构造函数,调用了start()方法。
public void run(){
}
}).start();
同步:多个线程使用同一个东西时,有可能出现线程安全问题(synchronized)