Java的编程逻辑--15章 并发
2021-07-13 16:05
标签:his 重入 共享 art run 另一个 start 变量 waiting 1、run()和start()的区别 2、线程的基本属性和方法 3、竞态条件:当多个线程访问和操作同一个对象时,最终执行结果与执行时序有关,可能正确也可能不正确。 解决方案: 4、内存可见性:多个线程可以共享访问和操作相同的变量,但一个线程对一个共享变量对修改,另一个线程不一定马上就能看到,甚至永远也看不到。因为涉及到寄存器和各级缓存。 解决方案: 5、synchronized synchronized可用于修饰类的实例方法(保护this),静态方法(保护类对象),代码块(任意对象)。 synchronized保护的是对象而非代码,只要访问的是同一对象的synchronized方法,即使是不同的代码,也会被同步顺序执行。 所以多个线程是可以同时执行同一个synchronized实例方法的,只要他们访问的对象是不同的即可。 可重入性:通过记录锁的持有线程和持有数量来实现的。 保证内存可见性:在释放锁时,所有写入都会写回到内存,而获得锁后,都会从内存中读最新数据。 如果只是保证内存可见性,synchronized的成本有点高, Java的编程逻辑--15章 并发 标签:his 重入 共享 art run 另一个 start 变量 waiting 原文地址:https://www.cnblogs.com/lakeslove/p/9541623.html
上一篇:几种异常点检测算法