Future Apex:
用于在单独的线程中运行进程,Cpu空闲时。
@future注释来标识异步运行的方法。
当使用同步处理时,所有方法调用都从执行Apex代码的同一线程进行,并且在该过程完成之前不会发生额外的处理。你可以使用@future的方法来执行任何你希望在自己的线程中异步运行的操作。这提供了不阻止用户执行其他操作并为进程提供更高的调节器和执行限制的好处。
@future 外部Web服务的标注。如果从触发器或执行DML操作进行标注,则必须使用future 或queueable 方法。
注意:@future的方法必须是静态方法,并且只能返回一个void类型。 指定的参数必须是原始数据类型,原始数据类型的数组或原始数据类型的集合。 值得注意的是,Future的方法不能将标准或自定义对象作为参数。
模板如下:
global class SomeClass {
@future
public static void someFutureMethod(List<Id> recordIds) {
List<Account> accounts = [Select Id, Name from Account Where Id IN :recordIds];
// process account records to do awesome stuff
}
}
测试模板:
@isTest
private class Test_FutureSample {
static testMethod void myUnitTest() {
Test.startTest();
List<ID> ids= new ID[]{'**1','**2'};
SomeClass.someFutureMethod(ids);
Test.stopTest();
}
}