Java多线程技术的9大知识点总结——精心整理

1,进程和线程的概念。

|--进程:是程序的动态执行过程,它经历了从代码加载,执行,到执行完毕的一个完整过程。

|--线程:是实现并发机制的一个有效手段。

网络配图

2,jvm中的多线程体现。

|--主线程,垃圾回收线程,自定义线程。以及他们运行的代码的位置。

3,什么时候使用多线程,多线程的好处是什么?创建线程的目的?

|--当需要多部分代码同时执行的时候,可以使用。

4,创建线程的两种方式。★★★★★

|--继承Thread

|--步骤

|--实现Runnable

|--步骤

|--两种方式的区别?

网络配图

5,线程的5种状态。

对于执行资格和执行权在状态中的具体特点。

|--被创建:

|--运行:

|--冻结:

|--临时阻塞:

|--消亡:

6,线程的安全问题。★★★★★

|--安全问题的原因:

|--解决的思想:

|--解决的体现:synchronized

|--同步的前提:但是加上同步还出现安全问题,就需要用前提来思考。

|--同步的两种表现方法和区别:

|--同步的好处和弊端:

|--单例的懒汉式。

|--死锁。

7,线程间的通信。等待/唤醒机制。

|--概念:多个线程,不同任务,处理同一资源。

|--等待唤醒机制。使用了锁上的 wait notify notifyAll. ★★★★★

|--生产者/消费者的问题。并多生产和多消费的问题。 while判断标记。用notifyAll唤醒对方。 ★★★★★

|--JDK1.5以后出现了更好的方案,★★★

Lock接口替代了synchronized

Condition接口替代了Object中的监视方法,并将监视器方法封装成了Condition

和以前不同的是,以前一个锁上只能有一组监视器方法。现在,一个Lock锁上可以多组监视器方法对象。

可以实现一组负责生产者,一组负责消费者。

|--wait和sleep的区别。★★★★★

网络配图

8,停止线程的方式。

|--原理:

|--表现:--中断。

9,线程常见的一些方法。

|--setDaemon()

|--join();

|--优先级

|--yield();

|--在开发时,可以使用匿名内部类来完成局部的路径开辟。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-11-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

APNS推送原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

3123
来自专栏dizhiling专栏

一行命令实现cpu占用率100%

cat /proc/cpuinfo |grep "physical id" | wc -l 可以获得CPU的个数, 我们将其表示为N.

1301
来自专栏IT可乐

Linux系列教程(二十二)——Linux的bash变量

  上篇博客我们介绍了bash的一些基本功能,这是我们平时操作最频繁的。本篇博客我们介绍bash的变量,为后面编写shell脚本做铺垫。 1、什么是变量   变...

22010
来自专栏前端知识分享

Vue---从后台获取数据vue-resource的使用方法

  作为前端人员,在开发过程中,我们大多数情况都需要从后台请求数据,那么在vue中怎样从后台获取数据呢?接下来,我简单介绍一下vue-resource的使用方法...

3101
来自专栏闵开慧

mapreduce主程序如何传递变量到map或者reduce函数中使用

    一般我们写的mapreduce主程序放在客户端机器上,执行任务时是在集群机器上,所以要将变量从主程序传递到我们自己写的map或者reduce函数中就不能...

4275
来自专栏CaiRui

Python之简单的用户登录和注册

#!/bin/bash/env python # -*- coding:utf-8 -*- def login(username,password): ...

39010
来自专栏Python小屋

Python多线程编程中daemon属性的作用

在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一: 如果某个子线程的daem...

3425
来自专栏lgp20151222

idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错...

1.2K3
来自专栏老九学堂

Java微课堂之基本选择结构2

本节讲解知识点回顾 ? ? ? 本节编程技巧和注意事项 条件选择结构关于分号和大括号什么时候可以打,什么时候不用打,它的意义是不同的。

2806
来自专栏Java开发者杂谈

Python(2):创建函数模块

说明: 在使用python的时候我们除了使用内置的函数之外,可能还需要使用一些别人写的函数。或者我们写的代码也希望可以给其他人使用。要实现这样的功能,我们就需要...

34612

扫码关注云+社区

领取腾讯云代金券