java 多线程

第一种实现多线程的方法
创建一个类去继承thread类
覆写其中的run方法
在主方法中实例化一个子类对象再调用start()方法即可启动一个线程
第二种实现多线程的方法
实现Runable接口
同样实现run()方法
启动线程必须依靠thread类的start方法,但Runable中没有此方法
那如何启动?
thread 类是Runable的子类,且通过查看jdk的API文档克制thread类有一个参数为Runable对象的构造方法
所以我们可以通过对象的多态,用实现Runable接口的子类去构造一个新的thread类,再调用这个thread类调用start方法去启动多线程
使用哪种方法好?
实现Runable接口好,它能够实现资源的共享,说简单点就是通过一个Runable的子类对象可以实例化多个thread对象,这三个thread对象共享这个子类。
线程的状态
1、创建状态,即new thread();
2、就绪状态,即start()后,等待cpu的调度
3、运行状态,即执行run方法
4、阻塞状态,即run停止,cpu资源被其他线程占用。
5、终止状态,线程执行结束。
ps:主线程也是线程,可以根据直接调用thread对象的run方法,会在控制台输出叫main的线程 ,一个java程序最少有两个启动的线程,一个main一个GC
常用方法
线程强制运行:
线程名.join() 让一个线程强制运行,等待这个线程运行结束后,其他线程才能继续执行
线程休眠:
线程名.sleep(long time)
让线程暂停运行多少时间,不是停止运行。
设置线程优先级
线程名.setPriority(ThreadMIN/MAX/NORM_PRIORITY)
优先级越高,线程越会率先执行。
主方法的优先级是norm
yield线程礼让
线程名.yield()
自己进入阻塞,让其他线程占用cpu资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值