随笔分类 - 多线程
摘要:什么是多线程的通信? 多线程对同一共享资源的不同操作。 wait() wait方法将当前的线程挂起,并释放出锁资源。wait方法属于Object类中。 此方法应始终在循环中使用: 此方法只应由作为此对象监视器的所有者的线程来调用。 此方法必须同sychnorized同时使用,不使用sychnoriz
阅读全文
摘要:package com.cn.test.thread; /** *abc三个线程顺序打印十次 */ public class TestSortedThread extends Thread{ static int threadFlag = 1; public TestSortedThread(String string) { supe...
阅读全文
摘要:validate 关键字可以保证多线程之间的可见性,但是不能保证原子操作。(需要了解java内存模型jmm) 运行结果: 上面例子中volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。 c
阅读全文
摘要:1.原子性: 一个操作或者多个操作,要么全部执行成功,要么全部执行失败。比如账户转账问题,A账户向B转100,A账户减去100元,B账户加上一百元,这两个操作必须具备原子性,才能保证数据的安全,所以需要锁来保证数据的原子性 2.可见性: 当一个线程修改变量之后,其他线程能够立即看见修改到的值。比如有
阅读全文
摘要:1. 什么叫线程安全? 多线程对共享资源进行写的操作,受到其他线程的干扰,导致数据偶问题,这种现象叫做线程安全问题。 运行结果: 线程安全解决的办法: 使用多线程之间同步synchronized或使用锁(lock)。 为什么使用线程同步或使用锁能解决线程安全问题呢? 将可能发生线程安全的代码,在同一
阅读全文
摘要:上述例子中: 在main方法中join1线程调用join方法,如果main方法抢到cpu的执行权,会将cpu的执行权让出来给join1线程,直到join1线程执行完毕之后才进行main线程的执行。join1和join2是同步进行竞争cpu的资源。 运行结果: Thread的join方法在start方
阅读全文

浙公网安备 33010602011771号