1:什么是多线程?
一个进程中有多个依次向下的执行路径, 即多个线程
2:有几种方式可以实现多线程? 谈谈你对这两种实现方式的认识。
某各类 extends Thread,这个类的实例化对象本身就是一个线程,但是由于单继承的原因,这个方式有局限性
解决方法就是 让这个类implements Runnable接口,其实例对象作为一个参数可以启动多个线程,并且可以实现数据共享
3:如何获取和设置线程名称?
xxx.setName()和xxx.getName()
4:线程的常见方法?
sleep(y);
yield();
join();
join(y);
interrupt();
5:线程的生命周期图?
执行完便会被回收。
6:线程安全问题的产生原因?
对共享数据进行操作的代码块,并非一个原子操作,可能在执行的过程中被挂起,然后被其他线程使用了没有来得及修改的共享数据。。
7:如何解决线程安全问题?
同步操作共享数据的代码块使其成为原子操作
8.start方法和run方法的区别?
start方法是开启一个线程,而run方法则是在主线程中调用了一个普通的方法而已。。没有新启动线程
9.interrupt方法需要如何使用?
只是将中止标记设置为true,并不能实际中止某线程
需要配合interrupted方法或者阻塞方法sleep等使用,来中止某线程。线程中断后cpu会挑选其他线程来执行,当没有可挑选的线程的时候,刚才中断的线程又可以接着开始执行;这段代码是最后两个线程都把i加到10
10.join方法的意义是什么?
将某线程x强行加入另一个线程y,暂缓线程y的操作。