java的线程通过java.lang.Thread类实现,vm启动时会有一个由主方法public static void main(){}所定义的线程,可以通过创建Thread的实例来创建新的线程。每个线程都是通过Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过Thread类的start()方法启动一个线程。
两种方法创建新的线程
1.实现Runnable接口
必须实现Runnable中的方法public void run();定义线程运行体。
如:
class MyRunner implements Runnable {
public void run(){}
}
主线程中
MyRunner r = new MyRunner();
//线程启动
Thread t = new Thread(r);
t.start();
实现了主线程与新线程的并发执行。(每个执行一会儿)
2.继承Thread,并重写run方法
class MyThread extends Thread{
public void run(){
try{
}catch(InterruptedException e){
return;
}
}
}
然后生成该类的对象
MyThread myThread = new MyThread();
myThread.start();
方法 | 功能 |
isAlive() | 判断线程是否未终止 |
getPriority() | 获取线程的优先级是多少 |
setPriority() | 设置线程的优先级数值 |
Thread.sleep() | 参数为线程睡眠的毫秒数,静态方法 |
join() | 合并线程,对象合并到当前线程,等到对象线程执行完,才执行当前线程,相当于调用对象线程 |
yield() | 让出cpu,当前线程进入就绪队列等待调度 |
wait() | 当前线程进入对象的wait pool |
notify()/notifyAll() | 唤醒对象的wait pool的一个/所有等待线程 |
线程同步:
当需要锁定当前对象时
synchronized(this)或者在方法前写public synchronized void XXX()