摘要:
什么是多线程的通信? 多线程对同一共享资源的不同操作。 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方 阅读全文
摘要:
运行结果: 结论:非守护线程结束之后jvm退出,守护线程没有要守护的线程,也进行退出 守护线程和用户线程唯一的区别在于: 补充说明: 定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开。 优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。 设置:通过setDae 阅读全文
摘要:
LinkedList简单的封装 testCast 阅读全文
摘要:
ArrayList的源码中数组的拷贝用到该方法: public static void arraycopy(Object src, --源数组 int srcPos, --源数组要复制的起始位置 Object dest, --目的数组; int destPos, --目的数组放置的起始位置; int 阅读全文
摘要:
package com.cn.test.jihe; import java.util.Arrays; /** * * insert * delete * update * get * */ public class ArrayList { /** * Default initial capacity. */ private static final int DEFAULT_CAPACI... 阅读全文