在学习多线程的时候,会知道在java的实际开发中经常出现高并发的问题,也就是同一资源或者说网站被多线程或者说多用户同时访问导致的线程不安全,易引起网站挂掉的情况称之为高并发。
在基础学习中,我们简单的从多线程的角度去了解最基础的并发解决方案。
还是以多窗口卖票为例
一个Thread的子类完成卖票方法。
这里在测试类中可以开启多个线程来访问同一个成员变量t,会导致卖票数量不精确种种情况。
用第一个解决方案: 同步代码块synchronized(){}
其中()内的参数必须是唯一性。字节码对象也可以,一个是字符串等等都可以;
synchronzied也可以直接同步方法,直接写在修饰符之前,不过必须加上static修饰保证方法对所有对象共享。
package cn.itsource.SaleTicket;
public class SafeTicketDemo extends Thread {
static int t = 100;
static String str = "嘿嘿";
@Override
//复写Thread中的run方法