java并行基础(要点总结)

一 线程状态

1. NEW

线程刚刚被创建时的状态。

2. RUNNABLE

NEW状态的线程调用了start()方法来启动后可能处于的状态。如果线程满足运行的状态,但还没有得到CPU调度,则处于此状态。

3. RUNNING

正在运行的线程状态。

4. TERMINATED

线程运行结束的状态。

5. BLOCKED

调用了start方法,但线程需要运行的某些资源没有得到满足时会处于BLOCKED状态。

扫描二维码关注公众号,回复: 5299127 查看本文章

6. WAITING & TIMED_WAITING

调用了wait方法的线程处于WAITING状态。WAITING状态的线程,可以通过notify方法唤醒。TIMED_WAITING除了可以通过notify唤醒外,还可以一个等待时间,超过了这个时间,线程也会自动唤醒。

二 线程运行方式

Thread t1=new Thread();
t1.run(); //不能开启线程,只是像普通代码一样在当前线程执行run里面的逻辑


t1.run(); //会开启新的线程

三 线程中断方式

1. Thread.stop(); 
不推荐使用。它会释放所有monitor,强行中断线程。
对于线程中有多条语句在执行,强行中断可能造成部分数据更新,部分数据没有更新,造成数据不一致

2. interrupt

public void Thread.interrupt() // 中断线程
public boolean Thread.isInterrupted() // 判断是否被中断
public static boolean Thread.interrupted() // 判断是否被中断,并清除当前中断状态

public void run(){
while(true){
Thread.yield();
}
}
t1.interrupt(); // 这种方式不会对t1造成任何影响,因为只是通知了t1,但没有告诉t1怎么做
public void run(){
    while(true){
        // 告知线程interrupt后如何做
        if(Thread.currentThread().isInterrupted()){
            System.out.println("Interruted!");
            break;
        }
        Thread.yield();
    }
}

猜你喜欢

转载自blog.csdn.net/tianlan996/article/details/87900540
今日推荐