1 声明一个继承自Thread的子类 SubThread并实现run()方法 class SubThread extends Thread{实现run方法}
Thread thread = new SubThread(); thread.start();
2 声明一个实现Runnable接口,class SubThread implements Runnable{实现 run方法}
Runnable runnable = new SubThread();
Thread thread = new Thread (runnable ); thread.start();
注意:只能用start方法,不能用run直接调用run方法,因为直接调用run方法相当于还是在当前线程内执行run方法,并不是多线程
3 通过线程池的方式
ExecutorService pool = Executors.newFixedThreadPool(3)
ExecutorService pool = Executors.newCachedThreadPool()
ExecutorService pool = Executors.newSingleThreadExecutor()
这是jdk提供的三种默认的线程池 ,第一个是固定个数的,第二个是缓冲线程池带重用的,第三个单个 worker 线程
然后调用pool的
线程类的stop方法和suspend都不建议使用,前者会解除线程的所有锁,后者可能会导致死锁