摘要:
1 package day2_4; 2 3 /** 4 * 线程通信:线程1和线程2,轮流交替打印1-100 5 * 6 * 涉及到的三个方法: 7 * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器 8 * notify():一旦执行此方法,就会唤醒被wait的一个线程,如 阅读全文
摘要:
1 package day2_4; 2 3 import java.util.concurrent.locks.ReentrantLock; 4 5 /** 6 * 银行有一个账户。 7 * 两个储户向同一个账户里存钱,每个储户都是存3000元,分三次,每次存1000。 8 * 每次存完打印账户余额 阅读全文
摘要:
1 package day2_4; 2 3 import java.util.concurrent.locks.ReentrantLock; 4 5 /** 6 * 解决线程安全问题方式三:loke锁 JDK5.0新增 7 * 8 * 1.面试题:synchronized 与 lock的异同? 9 阅读全文
摘要:
1 package day2_4; 2 3 import org.junit.Test; 4 5 /** 6 * 单例设计模式 7 * 1.1是什么 8 * 就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例 9 * 1.2 好处 10 * 由于单例模式只生成一个实例,减少了系统 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 * 使用同步方法解决继承Thread类的线程安全问题 5 * 6 * <p> 7 * 如果操作共享数据的代码完整的声明在一个方法中,在方法定义上,用synchronized修饰,即同步方法 8 * 9 * 关于同步方法的总结: 10 * 1.同 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 * 使用同步方法解决实现Runnbale接口的线程安全问题 5 * 6 * <p> 7 * 如果操作共享数据的代码完整的声明在一个方法中,在方法定义上,用synchronized修饰,即同步方法 8 * 9 * 关于同步方法的总结: 10 * 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 *例子:创建三个窗口卖票,总票数为100张,使用实现Runnable接口 5 * 1.问题:卖票过程中,出现了重票、错票的情况 >出现了线程安全问题 6 * 2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 *例子:创建三个窗口卖票,总票数为100张,使用实现Runnable接口 5 * 1.问题:卖票过程中,出现了重票、错票的情况 >出现了线程安全问题 6 * 2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 * 例子:创建三个窗口卖票,总票数为100张,使用实现Runnable接口 5 * 因为三个线程是共享Window2对象的,所以也是共享ticket变量的,自然就不用static修饰 ticket了 6 * 仍存在线程安全问题,待解决(还是会有 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 * 例子:创建三个窗口卖票,总票数为100张,使用继承Thread的方式 5 * 因为没有线程对象都有自己的ticket,所以每个窗口都卖100张票 6 * 解决方法时将ticket改为 static,但仍然有问题:执行过程中都会卖相同号的票 阅读全文
摘要:
1 package day2_3; 2 3 /** 4 * 测试Thread中的常用方法 5 * 1.start() 启动当前线程,调用当前线程的run() 6 * 2.run() 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中 7 * 3.currentThread( 阅读全文
摘要:
1 package day2_4; 2 3 /** 4 * 创建线程的方式二:实现Runnable接口 5 * 1.实现Runnable接口,并实现其抽象方法run() 6 * 2.创建这个实现类的对象 7 * 3.将这个是实现类对象作为参数传递到Thread类的构造器中,并创建Thread类的对象 阅读全文
摘要:
1 package day2_3; 2 3 /** 4 * 多线程的创建,方式一:继承与Thread类 5 * 1.创建一个继承于Thread类的子类 6 * 2.重写Thread类的run() >将此线程执行的操作声明在run()方法中 7 * 3.创建子类对象 8 * 4.通过子类对象调用sta 阅读全文