java 多线程初步

 
java中线程的生命周期及对应操作:
1)新建:即创建线程类的实例,为其分配内存和其他资源;
2)就绪:处于新建状态的线程对象用start()方法启动后,将进入线程队列等待CPU时间片,此时它已经具备了运行的条件,但还未调用run()方法,一旦轮到它来享用CPU资源,它的run()方法就会自动被调用,它就可以“脱离”创建它的主线程独立开始自己的生命周期了。原来处于阻塞状态的线程当阻塞解除后,不需要调用start()方法也将进入就绪状态;当其获得CPU资源时,也不会重新调用run()方法,而是从上次中止的位置继续执行。
Runnable接口:
只有一个方法run(),所有实现Runnable接口的类(如Thread类)都必须具体实现这个方法,为其书写方法体并定义具体操作。
Runnable接口的run()方法是一个较特殊的方法,它可以被运行系统自动识别和执行(包括从头开始执行和从中断处继续执行)。启动线程的run()方法是通过调用线程的start()方法来实现的,start()方法中调用启动线程的run()方法不同于调用一般的方法。调用一般的方法时,必须等到一般方法执行完毕才能返回start()方法,而启动线程的run()方法后(也可能没有启动,而只是告诉系统可以启动了),start()告诉系统该线程准备就绪后,马上就返回调用start()方法的语句下面的语句[而不管run()方法有没有开始执行语句],这时run()方法可能还在运行[也可能还未开始运行],这样线程的启动和运行并行进行,实现了多任务操作。
如果没有通过start()而直接调用run()方法,则同调用一般方法一样,要等run()执行完毕才会返回。这样就实现不了多线程了,所以实现多线程,必须用start()方法。
因为Runnable接口不提供start()方法,所以使用Runnable来实现多线程时,须用Runnable 对象目标初始化Thread类,由Thread提供start()方法,而运行时调用Runnable目标对象的run()方法。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值