1.什么是线程,什么是进程?
线程是进程中的执行单元,是cpu与代码片段的执行通道
进程是内存中的一片空间,正在运行的程序
2.实现多线程有几种方式?哪种比较好,好在哪里?
两种方式 继承Thread 实现Runnable 重写run方法
实现接口的方式比较好 接口可以多实现,避免了类继承的局限性,继承Thread占了继承位置,无法继承别的类
3.为什么会出现线程安全问题,该如何解决线程安全问题?
多个线程同时访问共享变量,且对共享变量做出了修改操作
可以使用同步方法 锁是this
同步块 锁是任意锁
或者使用Lock接口的lock()获得锁,unLock()释放锁
4.解决线程安全问题的原理?
多个线程共享同一个同步锁,只要有一个线程抢到执行权,就会带着同步锁直到遇到阻塞或者任务执行完毕才释放锁,
这样其他线程即使抢到了执行权也无法进入同步代码中
5.sleep和wait方法的区别?
sleep 释放执行权 不释放锁 只能指定睡眠时间
wait 释放执行权 释放锁 可以指定时间也可以不指定,不指定需要对应的notify/notifyAll唤醒 |