关于 线程、进程 的相关知识,自行百度。
该文只介绍java中并发操作的相关知识点。
一个例子:
Thread myThread=new Thread(()->{
// do something...
});
myThread.start();
java中定义线程的关键字是Thread类,do something 就是这个线程要做的事情,定义完后启动线程,调用:
myThread.start();
不要使用myThread.run();方法,该方法只是执行 do something处的逻辑,并不会启动一个新线程。
线程的状态
线程的状态
- New:新创建
- Runnable:可运行(因我们并不能决定线程什么时候执行,只是交给操作系统去调度,待有可用时间片时线程就会执行,所以是可运行状态,而不是正在运行状态)
- Blocked:被阻塞
- Waiting:等待
- Timed waiting:计时等待
- Terminated:被终止(要么正常结束,要么因未处理的异常导致线程意外终止
线程优先级
每个线程都有优先级,默认情况下继承自父线程,优先级从1-10一共10级,其中MIN_PRIORITY=1表示最低,MAX_PRIORITY=10表示最高,NORM_PRIORITY=5表示一般。优先级的高低可作用于线程调度器如何分配时间片,优先级越高被调度执行的可能越大。(不建议手动调整优先级,除非你明确要这么做,否则可能导致优先级低的线程永远不会被调度)。
如果要设置优先级,使用 myThread.setPriority(3); 方法。