Java多线程——098线程的生命周期

1.线程的五种状态:

新建,运行,阻塞,等待和终止
1.新建——当用new新建线程时
2.运行——当调用start方法时
3.阻塞——当线程需要获得对象的内置锁,而该锁被其他线程拥有时
4.等待——当等待其他线程运行完,等待通知调度表可以运行时
5.终止——当run方法运行完毕或出现异常时

2.状态查看

线程可以驱动任务,所以用实现unnable接口并编写run()来描述任务,使得该任务可以执行你的命令,比如以下任务:1.将当前线程暂停0.5秒 2.将当前线程永久等待

public class ThreadState implements Runnable{
    Thread thread = new Thread();
    public synchronized void waitForSeconde() throws InterruptedException {
        System.out.println("等一会儿");
        wait(500);//使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法
    }

    public synchronized void waitForYears() throws InterruptedException {
        System.out.println("等一年");
        wait();//永久等待,直到其他线程调用notify()或notifyAll()犯法
    }

    public synchronized void notifyNow(){
        notify();//唤醒由调用wait()方法进入等待状态的线程
    }
    //
    public void run() {
        try{
            waitForSeconde();
            waitForYears();
        }catch (InterruptedException e){
            e.printStackTrace();
        }

    }
public class Multithread {
    public static void main(String[] args) throws InterruptedException{
        //创建State对象
        ThreadState threadState = new ThreadState();
        //利用State对象创建Thread对象
        Thread thread = new Thread(threadState);
        System.out.println("新建线程"+thread.getState());
        thread.start();
        System.out.println("启动线程"+thread.getState());
        Thread.sleep(100);
        System.out.println("计时等待"+thread.getState());
        Thread.sleep(1000);
        System.out.println("等待线程"+thread.getState());
        threadState.notifyNow();
        System.out.println("唤醒线程"+thread.getState());
        Thread.sleep(1000);
        System.out.println("终止线程"+thread.getState());
    }

在这里插入图片描述

synchronized 同步锁:
当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码块时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。Thread1和thread2是互斥的,因为在执行synchronized代码块时会锁定当前的对象,只有执行完该代码块才能释放该对象锁,下一个线程才能执行并锁定该对象。

参考:《Java程序设计经典300例》《Java编程思想》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值