java线程学习(二)

守护线程

Java中线程分为两类:

  • 一类是:用户线程
  • 一类是:守护线程(后台线程)
    代表性的例如:垃圾回收线程

守护线程特点:

  • 一般守护线程是一个死循环
  • 所有用户线程只要结束,守护线程自动结束(即使守护线程是死循环)

主线程main方法是一个用户线程

创建守护线程:

1
2
3
4
5
6
Thread thread = new Thread(new DaemonThread());
thread.setName("守护线程");

// 在线程启动前调用setDaemon()方法
thread.setDaemon(true);
thread.start();

定时器

定时器作用:

  • 间隔特定的时间,执行一段特定的代码

定时器实现:

  • 可以使用sleep方法,设置睡眠时间,每到设定的时间段醒来,执行任务,这种方式比较原始
  • Java类库中有一个定时器:java.util.Timer,可以直接用,但是开发中也使用较少,因为很多高级框架都是支持定时任务的
  • Spring框架提供的SpringTask框架

实际实现定时器功能的还有其它框架和类库


通过Callable接口实现线程

实现线程方式:

  • 继承Thread类,重写run()方法
  • 实现Runnable接口,实现run()方法
  • 实现Callable接口,实现call()方法

Callable接口优缺点:

  • 可以获取线程的执行结果
  • 获取结果通过get()方法,但get()方法会导致当前线程阻塞