怎么用静态内部类实现卖票
时间: 2024-06-10 09:09:11 浏览: 8
静态内部类可以访问外部类的静态变量和方法,因此可以利用静态内部类来实现多线程卖票。具体实现可以定义一个静态内部类 TicketSeller,里面包含一个静态变量 count 表示剩余票数,以及一个静态方法 sellTicket() 实现售票逻辑,使用 synchronized 关键字保证线程安全。在外部类中创建多个 TicketSeller 实例,分别启动多个线程执行售票操作。
相关问题
java静态内部类实现单例模式卖票
可以使用静态内部类实现单例模式卖票,代码如下:
```java
public class TicketSeller {
private TicketSeller() {}
private static class TicketHolder {
private static final TicketSeller INSTANCE = new TicketSeller();
}
public static TicketSeller getInstance() {
return TicketHolder.INSTANCE;
}
public void sellTicket() {
// 卖票操作
}
}
```
这样,在需要使用 TicketSeller 的地方,可以通过 `TicketSeller.getInstance()` 获取单例对象。
如何使用静态内部类实现单例模式
使用静态内部类实现单例模式可以避免多线程并发访问的问题,同时实现简单方便。具体实现方法如下:
```java
public class Singleton {
// 私有化构造方法
private Singleton() {}
// 静态内部类,用于实例化单例对象
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
// 获取单例对象的方法
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
在上面的代码中,静态内部类 SingletonHolder 被声明为私有的,只有 Singleton 类可以访问它。在 SingletonHolder 中实例化了一个 Singleton 对象,且该实例化操作只会在类加载时执行一次,保证了线程安全性。由于 SingletonHolder 是一个静态内部类,只有在调用 getInstance() 方法时才会进行类加载,因此实现了懒加载的效果。
调用获取单例对象的方法 Singleton.getInstance() 时,会返回 SingletonHolder 中实例化的 Singleton 对象,保证了单例对象的唯一性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)