"Each Flink TaskManager provides processing slots in the cluster. The number of slots is typically proportional to the number of available CPU cores of each TaskManager. As a general recommendation, the number of available CPU cores is a good default for taskmanager.numberOfTaskSlots."
So based on the recommendation, you can have a 3 * 16 = 48(max) slots. And the calculation information is here[1].
Additionally, here is some resource about the task slot[2].