Definition - Future Apex is used to run processes in a separate thread, at a later time when system resources become available

  • Some governor limits are higher, like SOQL query and heap size limits.
  • Prevent mixed DML error.
  • The process runs in the background, asynchronously.

Important Points
  • A future method must be a static method.
  • It only returns void type.
  • The future method can’t take object and sObjects as parameters.
  • Parameters must be primitive data types like arrays of primitive data types, or collections of primitives data types.
  • Future methods can’t invoke another future method.
  • A future method may or may not be executing in the same order as it is called.
  • Future methods can’t be called from a trigger.
  • Future methods cannot be used in Visualforce page controller or constructor of a controller.
  • Note: The reason why objects can’t be passed as arguments to future methods is because the object can change between the time you call the method and the time that it actually executes. 

Governor Limit
  • The maximum number of future method invocations per a 24-hour period is 250,000
  • No more than 200 method calls per license per 24 hours
  • A maximum number of methods with future annotation allowed per Apex invocation is 50.

When to use?
  • Callouts to external Web services. If you are making callouts from a trigger or after performing a DML operation, you must use a future or queueable method. A callout in a trigger would hold the database connection open for the lifetime of the callout and that is a "no-no" in a multitenant environment.
  • Operations you want to run in their own thread, when time permits such as some sort of resource-intensive calculation or processing of records.
Some Examples - You can go through this link to view some real-time examples. Click below