线程调度分为:
1.分时调度
1.分时调度
2.抢占式调度
Java使用的为抢占式调度,优点在于线程间进行着高速的切换 提高程序运行效率,让 CPU 的 使用率更高。
Java使用的为抢占式调度,优点在于线程间进行着高速的切换 提高程序运行效率,让 CPU 的 使用率更高。
Callalble接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞。
多线程继承Thread:
Thread:是java提供实现线程的类,想要开启实现路径需要继承Thread
每个线程都拥有自己的线空间,共用一份内存
需要定义run方法,run方法是线性要执行的新的执行路径。触发方式不是调用,是通过Thread对象的start的方法来启动。
Runnable
1.通过创建任务,然后分配给线程的方式来实现多线程,更适合多个线程同时执行相同任务的情况
2.可以避免单继承所带来的局限性
3.任务和线程本身分离,提高程序的健壮性
4.后续学习的线程池技术,接受Runnable类型的任务,不接收Thread
守护线程:守护用户线程,当最后一个用户线程,所以守护线程自动死亡
用户线程:当一个进程不包含任何的存活的用户线程时,进程结束
线程安全问题:同一个任务多个线程情况下,会产生不安全问题。解决方法是隐式锁、显示锁。区别在显示锁需要自己解锁 隐式锁不需要自己解锁(避免产生线程死锁,死锁是因为在一个任务调用了另外一个任务)