java线程创建
java 中有两种创建线程方法:继承Thread类和实现Runnable接口.
- 实现Thread类线程创建:
class MyThread extends Thread{
@Override
public void run() {
System.out.println("MyThread");
}
}
调用代码:
MyThread myThread=new MyThread();
myThread.start();
- 通过继承Thread创建的线程,start()方法只能调用一次,否则会报异常:
Exception in thread "main" java.lang.IllegalThreadStateException
- 在调用myThread.start();时,并不代表先调用start()方法的线程会先执行。
实现Runnable接口.
- 代码示例
class MyRunnble implements Runnable{
public void run() {
System.out.println("MyRunnble");
}
}
调用线程
Thread myThread=new Thread(new MyRunnble());
myThread.start();
注1:两种不同实现方法调用的方式是不一样的。
注2:在java中是不支持多重继承的,若想实现多个继承可以考虑使用实现Runnable的方法来创建线程。
源码解析
Thread和Runnable
通过查看Thread源码,其实Thread也是实现了Runnable接口
public
class Thread implements Runnable {
/* Make sure registerNatives is the first thing <clinit> does. */
private static native void registerNatives();
static {
registerNatives();
}
......
}
守护线程
java中线程有两种:用户线程和守护线程
- 守护线程是一种特殊的线程,通过setDaemon(true)来设置。
- 进程不存在非守护线程是,守护线程会自动销毁。
- 示例:GC线程
经典示例-数据共享安全-卖票
网上很多,这里就不自己写了。可以参考.
即 多个数据