创建线程方法1、
class mythread extends Thread{
重写run方法
}
mythread m=new mythread ()
启动:m.start()
创建线程方法2、
class mythread implements Runnable{
重写run方法
}
mythread m=new mythread ()
Thread t=new Thread(m)//Thread t=new Thread(m,“xx线程name”)
t.start()
这种方式 Runnable的代码可被多个线程共享,适用于多个线程处理同一资源,原因如下
Thread t=new Thread(m,“xx线程name”)
Thread t=new Thread(m,“xx线程name1”)
阻塞状态:
sleep()方法可进入阻塞,时间结束进入就绪状态
守护线程:
线程对象.setDaemon(true)必须在start()方法之前调用
在守护线程中产生的新线程也是守护线程
不是所有任务都可以分配给守护线程,比如读写操作、计算逻辑
其他线程结束执行后,守护线程会立即结束
用jstack生成线程快照,来查看哪些是守护线程在jdk下的bin目录里
jstack -l pid(如9400)
含有daemon的是守护线程 tid、nid:cpu占有率