java多线程编程核心技术笔记一

2018-07-21  本文已影响0人  蓝框眼镜

线程概念:

线程可以理解为进程中独立运行的子任务。

线程的启动:

Thread.java类中的start()方法通知“线程规划器”此线程已经准备就绪,等待调用线程对象的run()方法。这个过程其实就是让系统安排一个时间来调用Thread中的run()方法,也就是使线程得到运行,启动线程,具有异步执行的效果。如果直接调用代码thread.run()就不是异步执行了,而是同步,那么此线程对象并不会交给“线程规划器”来进行处理,而是由main主线程来直接调用run()方法,也就是必须等run()方法中的代码执行完后才可以执行后面的代码。

synchronized关键字:

synchronized可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或“临界区”。当一个线程想要执行同步方法里面的代码时,线程首先尝试去拿这把锁,如果能够拿到这把锁,那么这个线程就可以synchronize里面的代码。如果不能拿到这把锁,那么这个线程就会不断地尝试拿这把锁,直到能够拿到为止,而且可能有多个线程同时去争抢这把锁。

非线程安全:

非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。

守护线程:

在java线程中有两种线程:用户线程和守护线程。守护线程是一种特殊线程,当进程中不存在非守护线程了,则守护线程会自动销毁,典型的守护线程就是垃圾回收线程(GC)。java虚拟机中,只有当最后一个非守护线程结束时,垃圾回收线程才会随着JVM一起结束工作。

上一篇下一篇

猜你喜欢

热点阅读