Java多线程

本文围绕Java展开,介绍了Java内存模型,包括线程通信、重排序等内容。还阐述了创建线程的三种方式,线程的生命周期及状态,如新建、就绪等,以及守护线程、Hook线程等。此外,对高并发概念进行讲解,涉及并发操作和线程同步的锁机制。

Java内存模型(jmm)

线程通信

消息传递

重排序

顺序一致性

Happens-Before

As-If-Serial

一、创建线程的方式

1.继承Thread类,重写该类的run()方法。

2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。接口

3.使用Callable和Future接口创建线程。具体是创建Callable接口的实现类,并实现clall()方法。并使用FutureTask类来包装Callable实现类的对象,且以此FutureTask对象作为Thread对象的target来创建线程。有返回值和异常。JUC包

 二、线程的生命周期及五种基本状态

  2.1 线程生命周期:新建(new)、就绪(start/yield等)、运行(CPU run)、阻塞(sleep/join等)、死亡(stop/加flag)。

 2.2 Thread类和Object的方法

sleep暂停/yield礼让属于类方法;join插队属于对象方法。

  2.3 守护线程

    用户线程和守护线程(Daemon)。jvm的退出不用等待守护线程执行完成。例:垃圾回收线程。应用场景:jvm退出时,线程能够自动退出。

    设置守护线程:t.setDaemon(true)  验证守护线程:t.isDaemon.

  2.4 Hook(钩子)线程 

    jvm退出的时候,钩子线程就会被启动执行。

   Runtime.getRuntime().addShutdownHook(new CleanWorkThread());

  2.5 常用方法

  isAlive()、setName()、getName()、currentThread()类方法。

三、高并发

 3.1 并发:同一个对象多个线程同时操作。抢占资源

 3.2 线程同步(线程安全):队列与锁 Synchronized

 锁机制:锁住对象或Class对象。

 3.3 Synchronized方法

 

转载于:https://www.cnblogs.com/wenxiangchen/p/10955879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值