Thread
实现步骤:
- 定义一个Thread类的子类
- 覆盖run()方法,提供线程执行的入口点
- 创建该线程的一个实例
- 启动线程,调用实力的start()方法
Runnable
实现步骤:
- 定义一个实现Runnable接口的类
- 创建一个上述类的类对象;以该对象为参数创建一个Thread类对象
- 创建Thread类对象的start()方法,启动线程
在执行的时候,start()方法会调用Runnable接口的实现类中的run()方法
Thread类提供的几种构造方法:
public Thread();
public Thread(Runnable target) ;
public Thread(ThreadGroup group, Runnable target) ;
public Thread(String name);
public Thread(ThreadGroup group, String name) ;
public Thread(Runnable target, String name) ;
public Thread(ThreadGroup group, Runnable target, String name);
public Thread(ThreadGroup group, Runnable target, String name, long stackSize)
守护线程
Java中有两类线程:守护线程、用户线程。守护线程是比较特殊的一种低级别线程,一般用于在后台为其他线程提供服务。
守护线程不是应用程序的核心,当程序的所有用户线程终止运行时,即使仍然有守护线程在运行,应用程序也将终止
通过调用方法isDaemon()可以判断线程是否是守护线程,通过调用线程对象的setDaemon(boolean on)方法可以将一个用户线程设置为守护线程。守护线程中创建的线程都将是守护线程
线程的优先级
默认情况下,线程将继承父线程的优先级,所谓父线程是指启动这个线程的线程。Thread类中定义了表示线程最低、最高和普通优先级的成员变量MIN_PRIORITY、MAX_PRIORITY和NORMAL_PRIORITY,代表的优先级等级分别为1、10和5.
线程优先级获取和设置:
threadObj.getPriority();
threadObj.setPriority(6);
Java互斥锁机制
用synchronized修饰方法;synchronized块
public synchronized void sale(int num) {... }
synchronized(obj) {...}