创建线程
继承Thread类,重写run方法
public class MyThread extends Thread{
@Override
public void run() {
System.out.println();
}
}
实现Runnable接口,重写run方法
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println();
}
}
启动线程
实例化线程对象,使用start()方法启动
Thread thread1 = new MyThread();
thread1.start();
Runnable runnable = new MyRunnable();
Thread thread2 = new Thread(runnable);
thread2.start();
i-- 和println()
currentThread()方法和this
线程A委托线程B执行
MyThread a = new MyThread();
Thread b = new Thread(a);
b.start();
//此时,两者有相同的优先级
isAlive()方法
当前线程是否活动状态
sleep(毫秒)方法
在毫秒内当前线程暂停执行
getId()方法
获取线程唯一标识
interrupt()方法
中断线程,但是不会真的停止,需要配合interrupted()或isInterrupted()方法来判断停止
interrupted()方法
测试当前线程是否中断,并清除中断状态
isInterrupted()方法
测试线程对象是否中断,不清除中断状态
异常停止法,renturn法
interrupt()中断后,用interrupted()判断,中断,则抛出InterruptedException异常退出,或者使用return退出run方法
在沉睡种中中断,在中断中沉睡,都会抛出中断异常
stop()方法
此方法会暴力停止线程,造成释放锁的不良后果
此方法会抛出ThreadDeath异常,但是通常不需要显式的捕捉
suspend()和resume()方法
暂停线程和恢复线程
已经不再使用,因为会造成独占锁和不同步的问题
yield()方法
放弃当前cpu资源,但是不知道什么时候又会获取cpu
线程优先级
1-10,越高优先级越高,优先级高的线程,有可能先执行完毕,但是也不一定,在线程的委托关系中,优先级是共享的
setPriority()设置优先级
getPriority()得到优先级
守护线程
使用setDeamon(true)来变成守护线程
守护线程只有在非守护线程全结束时,自己才会自动结束
原文:https://www.cnblogs.com/namusangga/p/14743356.html