java任务,java任务队列

发布时间:2022-11-28

本文目录一览:

  1. java程序员职责是什么?
  2. java定时任务没有执行完又到执行时间了
  3. java的几种定时任务

java程序员职责是什么?

很多对Java程序员感兴趣的朋友,总是在思考一个问题,我能不能成为一名Java程序员,能不能跟做不做是两回事。JAVA程序员广义上是指一群以JAVA为谋生手段的软件开发人员。狭义的说,是指拥有SUN公司JAVA认证的程序员。通常要求程序员精通java基础,java高级编程,及常用java设计模式,并深入理解mvc编程模式,了解uml相关知识。那么,作为一个java程序员,他们的工作职责是什么呢?

一、 java程序员工作 职责:

  1. 参与公司项目的设计、开发与维护;
  2. 具有独立完成模块开发工作的能力;
  3. 较好的沟通能力,能积极应对工作,具备较好的抗压性;
  4. 能够快速接受并掌握新知识;敢于面对和克服困难,具有分析和解决问题的能力;
  5. 做事认真负责,有责任心,有良好的团队合作精神。

二、Java开发程序员工作职责

  1. 完成软件系统代码的实现,编写代码注释和开发文档;
  2. 辅助进行系统的功能定义,程序设计;
  3. 根据设计文档或需求说明完成代码编写,调试,测试和维护;
  4. 分析并解决软件开发过程中的问题;
  5. 协助测试工程师制定测试计划,定位发现的问题;
  6. 配合项目经理完成相关任务目标。

三、Java测试程序员工作职责

  1. 具备扎实的软件测试理论基础,熟悉测试方法,测试流程;
  2. 熟练编写测试用例和执行测试用例,会使用禅道进行bug 管理, 熟练使用配置管理工具SVN;
  3. 会用数据库查询,了解接口测试,熟悉linux;
  4. 熟悉数据库Oracle基本的增删改查以及配置监听等;
  5. 熟悉SQL,会使用fiddler、httpwatch等工具进行接口测试。

java定时任务没有执行完又到执行时间了

代码错误。多数是代码错误导致java定时任务没有执行完又到执行时间了。

  1. 首先打开java检查代码是否错误。
  2. 其次打开网络诊断器进行测试网络连接是否异常。
  3. 最后点击重新运行java即可。

java的几种定时任务

java定时任务有三种:

  • JDK自带 :JDK自带的Timer以及JDK1.5+ 新增的ScheduledExecutorService;
  • Quartz :简单却强大的JAVA作业调度框架
  • Spring3.0以后自带的task :可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多;

代码参考:

JDK 自带的定时器实现

schedule(TimerTask task, Date time) 特定时间执行
public static void main(String[] args) {
    for (int i = 0; i < 10; ++i) {
        new Timer("timer - " + i).schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + " run ");
            }
        }, new Date(System.currentTimeMillis() + 2000));
    }
}

Quartz 定时器实现

2.1 通过maven引入依赖(这里主要介绍2.3.0)
注意:shiro-scheduler中依赖的是1.x版本,如果同时使用会冲突

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

2.2 创建Job类

public class TestJob implements Job{
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println(Thread.currentThread().getName() + " test job begin " + DateUtil.getCurrentTimeStr());
    }
}

2.3 调度任务

public static void main(String[] args) throws InterruptedException, SchedulerException {
    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    // 开始
    scheduler.start();
    // job 唯一标识 test.test-1
    JobKey jobKey = new JobKey("test" , "test-1");
    JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity(jobKey).build();
    Trigger trigger = TriggerBuilder.newTrigger()
        .withIdentity("test" , "test")
        // 延迟一秒执行
        .startAt(new Date(System.currentTimeMillis() + 1000))
        // 每隔一秒执行 并一直重复
        .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever())
        .build();
    scheduler.scheduleJob(jobDetail , trigger);
    Thread.sleep(5000);
    // 删除job
    scheduler.deleteJob(jobKey);
}

3. Spring 相关的任务调度

3.1 配置文件实现

<!-- spring-schedule.xml -->
<task:scheduler id="myScheduler" pool-size="10" />
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="job" method="test" cron="0 * * * * ?"/>
</task:scheduled-tasks>

3.2 注解实现

<!-- spring-schedule.xml -->
<task:scheduler id="myScheduler" pool-size="10" />
<!-- 启用注解 -->
<task:annotation-driven scheduler="myScheduler"/>
@Component
public class Task {
    @Scheduled(cron="0/5 * * * * ? ") //每5秒执行一次
    public void execute(){
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(DateTime.now().toDate())+"*********B任务每5秒执行一次进入测试");
    }
}