线程
很烦哎,为什么要trycatch?
// 创建一个线程,线程未开启,但是已经有资源了
Thread thread1 = new Thread("test");
// 使线程进入就绪队列runnable,等cpu
thread1.start();
// 使线程进入阻塞态blocked
try {
thread1.sleep(10);
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
新建状态:new完了
可运行状态:start()方法后
阻塞态:waite或者sleep
sleep()释放CPU执行权,但不释放同步锁;
wait()释放CPU执行权,也释放同步锁,使得其他线程可以使用同步控制块或者方法。
死亡:run方法执行完毕或者其他异常退出
中断线程:interrupt()手动终止,并抛出异常
.
.
.
检测线程是否中断方法
interrupt():请求中断,interrupted设为真,如果当前处于阻塞态则异常
interrupted():重置interrupted值
isInterrupt():只检测
.
.
线程启动方法:
yield() // 强制停止执行
isAlive() // 测试线程是否在执行
构造方法2
// 创建线程,构造方法
testthread testthread1 = new testthread();
Thread thread2 = new Thread(new ThreadGroup("group1"), testthread1, "thread2");
testthread1这个类必须是实现的
方法一:继承法创建线程
class testthread extends Thread {
public void run() {
while (true) {
try {
System.out.println("this is test");
sleep(1000);
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
}
然后再用testthread来代替线程即可
start,或者run方法都可以跑
.
.
.
方法2:继承Runnable接口
public class b {
public static void main(String[] args) {
// 重写方法
Runnable r1 = new test1();
// 拷贝构造
Thread t1 = new Thread(r1);
t1.start();
}
}
class test1 implements Runnable {
public void run() {
while (true) {
System.out.println("test");
}
}
}
这书讲的什么玩意(java程序设计第四版)
换教材,看不下去了,明天还是线程