并发和并行:例:我们的服务器能处理1W的并发量,处理器有4个核心,说明其实是同时跑的只有4个并行的任务。
一个程序同时执行多个任务,每一个任务称之为一个线程。
不要调用Thread类或Runnable对象的run方法,只会执行同一个线程中的任务,而不会启动新线程。应该调用start方法,这个方法将创建一个执行run方法的新线程。
没有可以强制线程终止的方法(stop已经被弃用),interrupt可以用来请求终止线程,标记中断状态为true。
有两个类似的方法:
interrupted是一个静态方法,能检测当前线程是否被中断,而且会清除中断状态,标记中断状态为false。
isInterrupted是一个实例,检测是否有线程被中断,不会改变中断状态。
线程抢占式执行。
当线程试图获取一个内部的对象锁,而该锁被其他线程持有,则该线程进入阻塞状态。
当一个线程被阻塞、等待,另一个线程被调度为运行状态,然后那个线程被重新激活(等待时间到、成功获得一个锁),线程调度器检查它是否具有比运行线程更高的优先级,如果有,则从当前运行的线程中挑选一个,剥夺运行权,选择新线程运行。