概述: 进程有多条执行路径, 合成为: 多线程.
进程和线程的描述:
进程:
可执行程序(文件), 例如: .exe//可以把进程理解为一辆车.
一台电脑上可以有多个进程, 这些进程之间的数据是相互隔离的.//例如: qq.exe, wechat.exe
线程:
线程是进程的执行路径(执行单元)//可以把线程理解为: 是马路
一个进程可以有多条线程, 这些线程可以共享该进程的数据.//例如: 往QQ群共享放一个文件, 该群中的所有的用户都可以下载.
进程依托于系统,线程依托于CPU 多线程并行和并发的区别:
并行: 两个(多个)线程同时执行. //前提: 需要多核CPU 并发:
两个(多个)线程同时请求执行, 但是CPU同一瞬间只能执行一个线程,
于是就安排这些线程交替执行, 因为时间间隔非常短, 我们看起来好像是同时执行的, 其实不是. 多线程的实现方式: 链接
方式一: 继承Thread类.
步骤:
1) 定义一个类(MyThread), 继承Thread类.
2) 重写Thread#run(). //重写Thread类中的run()方法.
3) 把要执行的代码放入run()方法中.
4) 在测试类中,创建线程对象.
5) 开启线程. //start() 好处: 代码相对比较简单. //因为是继承Thread类, 所以可以直接使用Thread类中的非私有成员.
弊端: 扩展性相对较差. //因为是继承, 而Java中类之间的继承只能单继承, 不能多继承, 但是可以多层继承. 注意事项:
A: 如果调用run()方法, 只是普通的方法调用.
B: 开启线程必须调用start()方法, 该方法会自动去调用run()方法.
C: 同一线程不能重复开启, 否则会报: IllegalThreadStateException异常. 方式二: 实现Runnable接口.
步骤:
1) 定义一个类(MyRunnable), 实现Runnable接口.
2) 重写Runnable#run().
3) 把要执行的代码放入run()方法中.
4) 在测试类中, 创建Runnable接口的子类对象,
MyRunnable mr = new MyRunnable();
并将其作为参数传入Thread类的构造, 创建线程对象.
Thread th = new Thread(mr);
5) 开启线程. //start() 好处: 扩展性相对较强.
弊端: 代码相对比较 繁琐. 方式三: 结合线程池使用(实现Callable接口). Thread类中的成员:
构造方法:
public Thread();
public Thread(String name);
public Thread(Runnable target);
public Thread(Runnable target,String name); 成员方法:
run(); //里边定义的是线程要执行的代码, 该方法会自动被start()方法调用.
start(); //开启线程, 会自动调用run().
getName();
setName();
sleep(); //休眠线程, 单位是: 毫秒.
currentThread(); //获取当前正在执行的线程对象(的引用). 多线程同步: 链接
概述/作用:
多线程(环境) 并发 操作同一数据, 有可能引发安全问题, 就需要用到同步解决. 分类:
同步代码块:
格式:
synchronized(锁对象) {
//要加锁的代码
}
锁对象:
1) 同步代码块的锁对象可以是任意类型的对象.
2) 必须使用同一把锁, 否则可能出现锁不住的情况. 同步方法:
静态方法:
锁对象: 该类的字节码文件对象.
非静态方法:
锁对象: this 多线程的生命周期
新建, 就绪, 运行(有可能会发生阻塞(系统控制) 或者 等待(可人为控制)状态), 死亡.

java基础之多线程一:概述的更多相关文章

  1. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

  2. JAVA基础知识总结1(概述)

    JAVA概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器. 1994年将Oak语言更名为Java. J ...

  3. JAVA基础系列(一) 概述与相关概念

    万事开头难,来这个平台上已经有一段时间了,看到了很多高质量的文章,也很喜欢这种简约的风格.一直也想把自己的零散的知识体系组织起来,但苦于自己拙劣的文笔和不成流派的风格让大家笑话,直到现在才开始.可是从 ...

  4. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  5. java基础之JDBC一:概述及步骤详解

    1. JDBC的简介 概述: 就是Java用来操作不同数据库(DBMS)的类库(技术), 本质就是一些类和接口. /* 类: DriverManager 接口: Driver, Connection, ...

  6. Java基础3-数组操作;类概述

    昨日内容回顾 数据类型 基本数据类型 1) byte, short, int, long, float, double 2) boolean[true, false] 3) char 100: 默认为 ...

  7. C#夯实基础之多线程一:初识多线程

    一. 烧水沏茶问题       在小学四年级有一个烧水沏茶问题,可以作为我们今天讨论话题的引子: 客人来了,要烧一壶茶,但是烧水需要5分钟,洗水壶需要1分钟,洗茶杯需要2分钟,接水需要1分钟,找茶叶需 ...

  8. Java基础系列-二进制操作

    原创文章,转载请标注出处:<Java基础系列-二进制操作> 概述 Java源码中涉及到大量的二进制操作,非常的复杂,但非常的快速. Java二进制表示法 首先了解下二进制,二进制是相对十进 ...

  9. Java基础系列--HashMap(JDK1.8)

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10022092.html Java基础系列-HashMap 1.8 概述 HashMap是 ...

随机推荐

  1. Leetcode22. Generate Parentheses(生成有效的括号组合)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/74937307冷血之心的博客) 题目如下:

  2. 前端之jQuery03 插件

    jQuery.fn.extend(object) 扩展 jQuery 元素集来提供新的方法(通常用来制作插件) 增加两个插件方法: // jQuery 扩展机制 // 自己扩展两个方法 // 把我这个 ...

  3. LeetCode — (1)

    摘要: Nim Game.WordPattern.Move zeros.First Bad version.Ugly Number五个算法的python实现. 一个月多没更新,大概是因为状态一直不太好 ...

  4. 【数据库】MongoDB学习

    http://www.w3cschool.cc/mongodb/mongodb-tutorial.html http://api.mongodb.org/python/2.7rc0/examples/ ...

  5. BZOJ - 3224 Tyvj 1728 普通平衡树 (treap/树状数组)

    题目链接 treap及树状数组模板题. treap版: #include<bits/stdc++.h> using namespace std; typedef long long ll; ...

  6. HihoCoder1620: 股票价格3 (单调队列 or DP)

    股票价格3 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在关注股票,为了计算股票可能的盈利,他获取了一只股票最近N天的价格A1~AN. 小Hi想知道,对于第 ...

  7. spring mvc加了@produces注解后报406

    问题背景:调用http的post接口返回一个String类型的字符串时中文出现乱码,定位出问题后在@RequestMapping里加produces注解produces = "applica ...

  8. ODBC、OLEDB、ADO、SQL的关系

    对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清SQL.ADO.OLE DB.ODBC,大脑中一片混乱,好像懂了,又好像没懂,非常的苦恼,今天下了点功夫研究了一下,贴出来,其中肯定有好多错误,希望 ...

  9. Server Error in '/' Application. IIS拒绝访问

    昨天将改好的网站重写发布更新了一下,就出现这种问题.那是一个头两个大呀. 刚开始以为是文件夹没有IIS的访问权限,在网上找的好多答案都是temp文件夹没有权限,,但将IIS的权限都加上后,还是不行,同 ...

  10. Navicat for MySQL使用手记(下)--实现自动备份数据库

    五.备份和还原MySQL数据库 在数据库的管理中,备份和还原是必须做认真做的事情,如果疏忽或者做粗糙了,那么一旦数据库故障后果不堪设想,所以Navicat同样也有备份和还原的功能,相比较创建功能,其备 ...