1.多线程的实现有几种方式?实现步骤分别是怎样的?
第一种为创建Thead的子类,重写run方法,然后创建该子类对象.
第二种为实现Runnable接口,重写run方法,创建该实现类的对象,然后创建Thead对象并将Runnable实现类对象传入Thead对象的构造方法.
2.继承Thread类和实现Runnable接口有啥区别?实现Runnable接口的优势体现在哪里?
继承只能单继承而接口可以多实现,所以使用Thread的代码耦合高,实现Runnable接口则可以提高代码的健壮性.而且Runnable接口可以实现同一任务的多线程并发运行
,因为Thread类带有含Runnable实现类对象的参数,可以提高程序的运行效率.
3.线程安全问题时怎么产生的?如何解决线程安全问题,有哪几种方式?
线程安全问题是由于线程并发共享资源的时候数据读取重复或者,一个线程进行读操作,另一线程进行写操作.就造成了数据不同步.
解决安全问题的方式有三种:同步代码块,同步方法,创建Lock锁.
4.sleep()方法和wait()方法的区别?
sleep方法是延时,wait方法是休眠,需要别的线程唤醒,也可以给具体的休眠时间.
5.线程有几种状态?他们之间是如何转化的?
有六种状态:New,Runnable,Blocked,Waiting,Timed Waiting.
New是新建未start的状态,terminated则是一个线程终止的状态,Blocked状态是其他线程持有锁的时候此时线程的阻塞的状态,wait是无限等待的状态需要调用wait方法,需要设置休眠时间或者需要唤醒,Timed Waiting是计时等待一般需要设置时间,除了这几种状态就是Runnable状态 |