宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

创建线程方法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占有率