-
进程
进程是指系统中一个正在运行程序,程序一旦运行就是一个进程 进程是系统进行资源分配的独立实体,且每个进程拥有独立的地址空间 线程可以拥有多个线程,每个线程使用所属进程的栈空间
-
线程
线程是进程的一个实体,是进程的一条执行路径 线程是CPU独立运行和独立调度的基本单位
-
线程创建方式
继承 Thread 类 实现 Runable 接口 通过Callable和Future创建线程
-
线程Sleep、Yield、Join
sleep 线程休眠,当前线程暂停一段时间,让出CPU给其他线程运行,调用sleep方法不会释放锁 【running -> timedwaiting-> runable】 yield 线程让步,当前线程让出CPU给相同优先级的其他线程运行; yeild方法不hi阻塞线程,而是让线程重回就绪状态,进入等待队列与其他线程一起争夺CPU。 所以可能出现yeild方法调用之后继续运行的情况;调用yeild方法不会释放锁 【running -> runable ->? running】 join 等待线程结束,意思是如果在主线程中调用该方法(子线程t2,t2.joint())就会让主线程休眠, 等到调用该join方法的线程(t2)的run方法执行完毕之后,继续运行主线程。 本质是对Object类的wait方法进行包装。 【running-> waiting/timedwaiting-> t2执行完毕 -> runable】
-
jvm中线程状态迁移图解