【JUC-2】java线程创建,状态转换与线程方法。run与start,futureTask,守护线程特性,join

本文参考黑马程序员:https://www.bilibili.com/video/BV16J411h7Rd?p=11
总结

  1. java线程分为6种状态 new是创建一个线程进入创建状态,操作系统则把线程状态分为五个:创建,可运行(就绪),运行,阻塞,终止。(这部分可参考操作系统)
  2. start与run方法–start在线程中执行方法,run在主线程执行。thread.run()
  3. sleep与yield sleep有限时间阻塞,yield让出线程进入就绪(也是阻塞)
  4. join 调用线程等待被调用线程
  5. interrupt有打断标记(可以判断打断的是阻塞进程还是活动进程)
  6. 不推荐suspend stop resume这些方法操纵打断线程,可能引起资源阻塞
  7. 守护线程:非守护线程结束所有守护线程均停止
  8. 守护线程例子:1.垃圾回收器线程2.tomcat的 Acceptor 和 Poller
  9. 虚拟机栈和线程相关联,方法的运行都在栈中。(栈帧)
  10. 程序计数器与线程有关 ,记录上下文切换断点,记录下一条字节码指令的地址
  11. 线程实现:1.继承thread(实现父类run)。2.创建Runnable接口(接口实现run)并传参给Thread(使用lamda表达式优化:Runnable r = ()->{ };
  12. Runnable是分离了线程的创建与任务的编写。
  13. 相比较Thread,Runnable更加灵活,脱离继承
  14. 实现线程返回结果可以使用futureTask,创建方法就是创建futureTask然后构造参数选择实现callable接口(实现call方法),将task再传入thread构造器即可。
  15. 只有当线程创建并自发竞争时会进入blocked状态,其它只要是调用方法则会线程进入waiting或者是timed_waiting。

线程状态

java将阻塞状态更加细分了。实际上这是对线程不同方法的实现
在这里插入图片描述
在这里插入图片描述

方法

推荐查看:https://nyimac.gitee.io/2020/06/08/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/#3%E3%80%81%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95

线程创建

依旧推荐https://nyimac.gitee.io/2020/06/08/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/#2%E3%80%81%E5%8E%9F%E7%90%86%E4%B9%8B%E7%BA%BF%E7%A8%8B%E8%BF%90%E8%A1%8C
带返回值的线程创建

    public class Test3 {
	public static void main(String[] args) throws ExecutionException, InterruptedException {
        //需要传入一个Callable对象
		FutureTask<Integer> task = new FutureTask<Integer>(new Callable<Integer>() {
			@Override
			public Integer call() throws Exception {
				System.out.println("线程执行!");
				Thread.sleep(1000);
				return 100;
			}
		});

		Thread r1 = new Thread(task, "t2");
		r1.start();
		//获取线程中方法执行后的返回结果
		System.out.println(task.get());
	}
}

状态转换

只有当线程创建并自发竞争时会进入blocked状态,其它只要是调用方法则会线程进入waiting或者是timed_waiting。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值