随笔分类 - 并发
摘要:千万千万不要把java中的线程状态和操作系统中的线程状态弄混淆,如果线程状态没有搞清楚,并发编程就无从谈起。 在Java JDK类库中的Thread类里,只定义了6种状态。 Blocked:阻塞状态,等待锁的释放 New:未启动状态 Runnable:可运行状态,包括(运行和就绪状态) Termin
阅读全文
摘要:线程让步Thread.yield():当前线程已经把重要的部分执行完毕,此时可以切换线程。 class MyThread implements Runnable { public void run() { int i = 0; while(i < 6) { System.out.println(Th
阅读全文
摘要:Thread.sleep(ms):当前线程进入Time—Wait状态,并等待指定时间。 与wait的区别:wait只能用于同步块中,wait释放锁。 class MyThread implements Runnable { public void run() { int i = 0; while(i
阅读全文
摘要:join():当前线程等待子线程终止 class MyThread implements Runnable { public void run() { int i = 0; while(i < 100) { System.out.println(Thread.currentThread() + "
阅读全文
摘要:synchronized关键字定义同步代码块活方法,进入同步代码块的线程获得该对象的锁。锁没有释放,其他线程阻塞,锁释放,其他线程争锁。 实例锁:synchronized修饰非静态方法,线程获得普通对象的锁。 类锁:synchronized修饰静态方法,线程获得Class对象的锁。 class My
阅读全文
摘要:1、Interrupt() 当该线程处于Runnable状态时,调用Interrupt()设置该线程中断标志 当线程处于Wait状态时,调用interrupt()该线程抛出异常并清除中断标志 当线程处于Blocked的状态时,调用interruput(),线程不响应中断,线程会在获得锁后自中断一次
阅读全文
摘要:1、JAVA内存模型(注意与JVM内存模型的区别) 内存模型:定义一组规范,围绕可见性、原子性、有序性定义变量的访问方式,屏蔽软硬件差异达到内存一致性效果。 2、volatile关键字 可见性:内存屏障保证写操作立刻刷新缓存,读操作要从内存读取最新值到工作内存 禁止指令重排:(针对普通无锁的全局变量
阅读全文
摘要:1、乐观锁与悲观锁 悲观锁:假设一定会发生问题,所以要进行加锁。 乐观锁:假设不会发生问题,边运行边检测冲突,发生冲突采取补偿措施,一般是不断重试。(CAS) 乐观锁适用于发生冲突频率不高的情况,悲观锁适用于发生冲突频率高情况(使用乐观锁就会不断重试开销很大) 2、公平锁与非公平锁 公平锁:多线程在
阅读全文
摘要:1、直接继承Thread package newthrow; class MyThread extends Thread { MyThread(String name) { super(name); } public void run() { int i = 0; while(i < 20) { S
阅读全文

浙公网安备 33010602011771号