静态方法
public static native Thread currentThread();//获取当前执行的线程
public static native void sleep(long millis)//休眠毫秒值
实现多线程方法一
public class MyThread extends Thread{
@Override
public void run() {}
}
实现多线程方法二
class Thread implements Runnable{
public Thread(Runnable target) {}
}
Runnable{
public abstract void run();
}
方法比较:
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。总结:
实现Runnable接口比继承Thread类所具有的优势:
1.适合多个相同的程序代码的线程去共享同一个资源。
2.可以避免java中的单继承的局限性。
3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。
4.线程池只能放入实现Runable或Callable类线程,不能直接放入继承Thread的类。
扩充∶在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM其实在就是在操作系统中启动了一个进程。
多线程安全
1.使用synchronized (object){...共享数据..}方法//this对象是实现类对象
2.使用public synchronized void method(){...共享数据..}方法,共享数据不允许在synchronized修饰词之外进行操作
3.static 方法:
public static synchronized void buytiket(){...共享数据..}//方法
public static void buytiket(){...synchronized(XXX.class)共享数据..}//对象