| | |
| | | * 多线程环境下运行 |
| | | * @return |
| | | */ |
| | | public static synchronized TaskSurpport popTask(){ |
| | | public static TaskSurpport popTask(){ |
| | | synchronized(tasks){ |
| | | TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ; |
| | | if(t != null){ |
| | | tasks.remove(0) ; |
| | |
| | | |
| | | return t ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 放回任务 |
| | |
| | | * 这里需要同步锁,因为上面方法中执行完tasks.get(0)且未执行tasks.remove(0)期间,本方法执行并且执行完,那么后期就会出乱子 |
| | | * @param t |
| | | */ |
| | | public static synchronized void freeAndCleanTask(TaskSurpport t){ |
| | | public static void freeAndCleanTask(TaskSurpport t){ |
| | | synchronized(tasks) { |
| | | if(t != null){ |
| | | boolean find = false ; |
| | | for(TaskSurpport tin : tasks){ |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 实例化任务对象树 |