- 博客(4)
- 收藏
- 关注
原创 线程的生命周期及之间的转换.
1、新建状态(new):使用new创建一个线程,仅仅只是在堆中分配了内存。新建状态下,线程还没有调用 start()方法启动,只是存在一个线程对象而已Thread t = new Thread(); //这就是t线程的新建状态2、可运行状态(Runnable):新建状态调用start()方法,进入可运行状态。而这个又分成两种状态,ready和running,分别表示就绪状态和运行状态就绪状态:线程对象调用了 start() 方法,等待 JVM 的调度,(此时该线程并没有运行)运行状态
2020-08-04 18:00:53 204
原创 什么是线程安全问题,为什么会出现?怎么解决
线程安全问题:在操作系统中,进程之间的数据是隔离的。但是注意:如果是一个进程里面多个线程,线程之间是共享一个进程的在Java中,如果使用多个Thread线程启动同一个Runable的线程对象,此时这些线程会共享Runable对象中的属性,就容易出现线程安全问题(非线程安全问题)。什么是线程安全的?如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所
2020-08-04 17:39:22 408
原创 volatile关键字
Volatile是一个类型修饰符,被设计用来修饰被不同线程访问和修改的变量。在程序设计中,尤其是C语言、C++、C#和Java语言中,使用Volatile关键字声明的变量或对象通常拥有和优化和(或)多线程相关的特殊属性。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化机会。Volatile的作用:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单来说就是防止编译器对代码进行优化比如如下程序:XBYTE[2]=0x55;XBYT
2020-08-04 17:22:21 93
原创 synchronized和Lock的区别
Synchronized 和 Lock的概念Synchronized 是Java 并发编程中很重要的关键字,另外一个很重要的是 volatile。Syncronized 的目的是一次只允许一个线程进入由他修饰的代码段,从而允许他们进行自我保护。Synchronized 很像生活中的锁例子,进入由Synchronized 保护的代码区首先需要获取 Synchronized 这把锁,其他线程想要执行必须进行等待。Synchronized 锁住的代码区域执行完成后需要把锁归还,也就是释放锁,这样才能够让其他线.
2020-08-04 17:13:10 196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人