进程是处于运行过程中的程序;线程是进程中的一个执行单元;一个程序运行后至少有一个进程,一个进程中可以包含多个线程。

Java 创建线程有三种方法:

1)继承 Thread 类

public class MyThread extends Thread{@Overridepublic void run() {for (int i=0; i<5; i++) {try {TimeUnit.SECONDS.sleep(1);System.out.println("MyThread");} catch (InterruptedException e) {e.printStackTrace();}}}
}

2)实现 Runnable 接口

public class MyRunnable implements Runnable{@Overridepublic void run() {for (int i=0; i<5; i++) {try {TimeUnit.SECONDS.sleep(1);Thread.yield();System.out.println("MyRunnable");} catch (InterruptedException e) {e.printStackTrace();}}}
}

3)实现 Callable 接口

public class MyCallable implements Callable<String> {@Overridepublic String call() throws Exception {TimeUnit.SECONDS.sleep(15);System.out.println("MyCallable");return "completed";}
}

线程启动有几种方式:

1)Thread 类的 start 方法启动

2)ExecutorSerivce 的 execute 方法启动

线程的几个方法:

1)sleep

使用方法为 Thread.sleep(long);

意思是当前线程暂停一段时间,让其他线程运行。根据 sleep 睡眠时间到达后自动复活。

2)join

使用方法为 thread对 象,thread.join(),thread.join(long);

意思是在当前正在执行的线程里加入另外一个线程 thread,等待 thread 执行完或者指定时间之后再继续执行当前线程。

3)yield

使用方法为Thread.yield();

意思是当前正在执行的线程让出 cpu,进入等待队列,线程状态由running 进入 ready状态,等待调度执行器执行。

线程的几种状态:

1) new

new 线程后调用 start 启动方法前,处于 new 新建状态

2)ready

线程调度器将 thread 加入到 CPU 等待队列等待 CPU 执行的状态为 ready 就绪状态

3)running

线程在 CPU 上运行的状态为 running 运行状态

4)timedwaiting

线程运行期间如果调用了 o.wait(long), thread.join(long),Thread.sleep(long), LockSupport.parkNanos(long), LockSupport.parkUntil(long) 方法后,进入timedwaiting 状态,等到指定的时间结束后回到 running 状态。

5)waiting

线程运行期间如果调用了o.wait(), thread.join(), LockSupport.park()方法,没有指定时间,则进入 waiting 等待状态,当调用o.notify(), o.notifyAll(), LockSupport.unpark() 方法后回到 running 运行状态。

6)blocked

线程在等待进入同步代码块的锁的状态,为 blocked 阻塞状态;获取锁之后进入 ready 就绪状态。

7)terminated

线程正常执行结束后就进入 terminated 结束状态,并且不能再回到 new 状态。

Java 并发编程之创建线程,启动和常用方法相关推荐

  1. java并发编程实践(2)线程安全性

    [0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...

  2. Java 并发 多线程:创建线程的四种方式

    Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...

  3. java并发编程第一课 线程的创建、停止和状态变更

    开篇词: 由点及面,搭建你的 Java 并发知识网 你好,欢迎学习<Java 并发编程核心 78 讲>,我是讲师星星,一线互联网公司资深研发工程师,参与过集团内多个重点项目的设计与开发. ...

  4. Java并发编程—什么是线程?

    原文作者:way_more 原文地址:Java 多线程常见基础面试题总结,面试必看! 目录 一.什么是线程和进程? 二.简要描述线程与进程的关系 三.FAQ 一.什么是线程和进程? 1.1. 何为进程 ...

  5. Java并发编程(01):线程的创建方式,状态周期管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.并发编程简介 1.基础概念 程序 与计算机系统操作有关的计算机程序.规程.规则,以及可能有的文件.文档及数据. 进程 进程是计算机中的程序 ...

  6. Java并发编程 synchronized保证线程安全的原理

    文章转载致博客 blog.csdn.net/javazejian/- 自己稍加完善. 线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源 ...

  7. Java并发编程(02):线程核心机制,基础概念扩展

    本文源码:GitHub·点这里 || GitEE·点这里 一.线程基本机制 1.概念描述 并发编程的特点是:可以将程序划分为多个分离且独立运行的任务,通过线程来驱动这些独立的任务执行,从而提升整体的效 ...

  8. Java并发编程(04):线程间通信,等待/通知机制

    本文源码:GitHub·点这里 || GitEE·点这里 一.概念简介 1.线程通信 在操作系统中,线程是个独立的个体,但是在线程执行过程中,如果处理同一个业务逻辑,可能会产生资源争抢,导致并发问题, ...

  9. 【并发编程】创建线程的四种方式

    上一篇我们初步认识了线程,现在我们来讲一下,创建线程的三种方式 1.继承Thread 类通过继承thread类,然后重写run方法(run方法中是线程真正执行的代码,runable也是如此)即可.当子 ...

最新文章

  1. Oracle分析函数五——统计分析函数
  2. oracle 监听程序当前无法识别连接描述符中请求的服务_Go 中的优雅升级
  3. Cracer渗透视频课程学习笔记——漏洞分析
  4. python之路——常用模块2
  5. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
  6. springboot 不同环境不同的配置
  7. 05.global_index_setting_index相关全局设置
  8. .NetCore使用NETCore.MailKit发送邮件
  9. 【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模
  10. Win11系统自动暂停更新后想继续怎么办 Win11系统重新启动更新教程
  11. 4.9 利用对应的泛型替换Hashtable[转]
  12. C++ string是否包含某字符串方法(已封装)
  13. 少林寺步入 5G 时代!
  14. Backpropagation Algorithm 的梯度
  15. Perl语言必看书籍推荐
  16. 笔记本计算机故障与诊断,笔记本电脑维护与故障诊断
  17. cisco思科模拟器中断translating域名翻译快捷键
  18. 【Operamasks-UI】可编辑表格insertRow和deleteRow遇到空表格时的问题
  19. python 文件读取
  20. python学生成绩管理系统实验报告心得_学生成绩管理系统心得体会

热门文章

  1. 【英语学习】【WOTD】scrumptious 释义/词源/示例
  2. python 审批流_Odoo 基于企业微信实现的通用审批流功能的自助配置及使用说明 - Oejia 技术栈,企业方案分享、Odoo顾问...
  3. telnet后为啥打开的时防火墙_以前用散煤取暖时,农民很大方,换上天然气后就“蔫了”,为啥?...
  4. winscp连接windows_winscp登陆云主机,winscp登陆云主机如何登陆,教程详情
  5. 返回最大数,不同语言之间的比较
  6. Keras-11 GAN MNIST
  7. 基于Keras的卷积神经网络(CNN)可视化
  8. 平台建设的根节与基础保障——互联网平台建设系列...
  9. Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较
  10. Android内存优化(二):一分钟发现内存泄漏