java 多线程编程

简介: 一:线程的创建 1:编写一个继承Thread类的类,然后在后面重写Thread类的run()方法。 步骤 a 创建一个继承Thread的类 b在创建的Thread子类中重写run()方法 c 创建Thread子类的实例 d通过调用该实例上的run()方法 2:编写一个类实现Runabl...

一:线程的创建

1:编写一个继承Thread类的类,然后在后面重写Thread类的run()方法。

步骤

a 创建一个继承Thread的类

b在创建的Thread子类中重写run()方法

c 创建Thread子类的实例

d通过调用该实例上的run()方法

2:编写一个类实现Runable接口

a 创建一个实现Runable接口

b在IanyRunable实现接口的类中实现run()方法

c创建一个Runable类的实例

d创建一个Thread类,讲Runable的实例作为构造器参数传进去

e通过调用Thread类的实例start()方法

二:线程的生命周期

生命周期有几个状态

 

      新状态:线程对象已经创建,还没有在其上调用start()方法。 

      可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。 

      运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。 

      等待/阻塞/睡眠状态:这是线程有资格运行时它所处的状态。实际上这个三状态组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态。 

      死亡态:当线程的run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。 如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。

      线程睡眠 sleep(): 执行该方法可是当前的线程停止运行若干毫秒,线程由运行状态进入不可运行状态,睡眠时间过后继续进入可运行状态。

 三:解决线程同步的问题

1 使用同步块 synchronized(取的锁的对象){

}

2 使用synchronized的方法。

四:线程之间通过wait(),notify(),notifyAll()方法通信。

相关文章
|
2天前
|
Java 数据库
【Java多线程】对线程池的理解并模拟实现线程池
【Java多线程】对线程池的理解并模拟实现线程池
10 1
|
1天前
|
安全 Java
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
|
1天前
|
安全 Java
【JAVA进阶篇教学】第六篇:Java线程中状态
【JAVA进阶篇教学】第六篇:Java线程中状态
|
1天前
|
缓存 Java
【JAVA进阶篇教学】第五篇:Java多线程编程
【JAVA进阶篇教学】第五篇:Java多线程编程
|
1天前
|
Java
【JAVA基础篇教学】第十二篇:Java中多线程编程
【JAVA基础篇教学】第十二篇:Java中多线程编程
|
1天前
|
安全 Java
java-多线程学习记录
java-多线程学习记录
|
2天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
12 0
|
2天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
9 0
|
2天前
|
安全 Java 程序员
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
6 0
|
2天前
|
Java
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
11 1