在实际项目开发过程中,线程是经常要用到的,特别是为了不影响项目的运行效果。
以下就以实际项目中的简单例子来介绍:
public class SystemRedisInfoController extends implements Runnable { @RequestMapping(value = "/flushRedis") public void deleteAll(HttpServletRequest request, HttpServletResponse response) throws ManagerException{ //清空左侧树配置、通知缓存 SystemRedisInfoController imp = new SystemRedisInfoController(); Thread thread = new Thread(imp); thread.start(); } @Override public void run() { //逐一删除对应的左侧树缓存和通知通告 List<User> userList = userManager.findAll(); try { Jedis jedis = new Jedis(); for (User user : userList) { String userId = user.getId(); String zcsKey = Finals.JEDIS_ZCS.concat(userId); String tzKey = Finals.JEDIS_TZ.concat(userId); jedis.del(zcsKey.getBytes()); jedis.del(tzKey.getBytes()); } } catch (Exception e) { System.out.println("缓存未连接!"); } } }
在运行的方法中创建线程,需要该类实现(implement)Runnable接口,然后红色字体部门就是创建线程,通过start方法启动线程,执行run方法。
run方法是实现接口之后需要写的方法,在这里进行线程中的部分。
值得注意的是:如果需要传参,可以声明一个全局变量,然后执行方法的时候给全局变量赋值,该全局变量声明为static,在run方法中就可以接收到参数的值了。
如果以上能够解决就不用考虑线程加锁的问题。如果在执行run方法时一些方法报错了,那么就需要用到锁的概念了,详情见下一篇。