生成线程的方式分别为:
(1)继承Thread类
(2)实现Runnable接口
(3)实现Callable接口,通过Future得到线程执行信息
(4)通过线程池创建线程
1)通过继承Thread类实现对象
优点:
Thread类实现了Runnable接口,编写简单,如果需要访问当前线程,可以通过this获得
缺点:
java是单继承机制,扩展性降低
备注:
Synchronized如果锁的位置是方法上,锁的是当前传入的实例对象,如果是同步代码块上锁的是括号中配置的对象,可以是this当前实例对象,也可以是class对象,如果锁的是静态代码块,静态同步方法,锁的是当前类的class对象
public class ThreadTest{ public static void main(String[] args) { MyThread myThread1 = new MyThread(); MyThread myThread2 = new MyThread(); MyThread myThread3 = new MyThread(); myThread1.start(); myThread2.start(); myThread3.start(); } } class MyThread extends Thread{ @Override public void run() { synchronized (MyThread.class){