Java进阶(多线程机制的基本操作)
来源:互联网 发布:现代言情推荐 知乎 编辑:程序博客网 时间:2024/06/05 05:31
系统级程序员必须对多线程机制了解得非常透彻。
在一个程序中,Main方法叫主线程,由这个主线程分出来的另外一些分支,且这些分支线程能够与主线程并行,这种程序就是多线程机制的程序。
CPU是真的那么强大,能三心二意吗?NO,由于CPU的运算速度非常快,CPU将运算时间分为一个一个的小时间片,一段时间执行这个线程另一段时间执行另一个线程。进程只是一个静态的概念,而线程是一个进程里面的不同的执行路劲。但是并不是说CPU不能同时执行两个线程,只要CPU是双核,或者双CPU。
Java的线程是通过java.lang.Thread类来实现的。可以通过new一个Thread的对象来创建新的线程,每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,这个方法是Thread类中最核心的方法,在run()方法里写什么就执行什么,方法run()称为线程体。还可以通过调用Thead类的start()方法来启动一个线程。start()和run()两种方法是有区别的,下谈。
java中怎么要启动一个新的线程:①定义线程类实现Runable接口 ②继承Thread类
//温习面向对象的内容:
// 1.实现该接口必须重写该接口的方法
在一个程序中,Main方法叫主线程,由这个主线程分出来的另外一些分支,且这些分支线程能够与主线程并行,这种程序就是多线程机制的程序。
CPU是真的那么强大,能三心二意吗?NO,由于CPU的运算速度非常快,CPU将运算时间分为一个一个的小时间片,一段时间执行这个线程另一段时间执行另一个线程。进程只是一个静态的概念,而线程是一个进程里面的不同的执行路劲。但是并不是说CPU不能同时执行两个线程,只要CPU是双核,或者双CPU。
Java的线程是通过java.lang.Thread类来实现的。可以通过new一个Thread的对象来创建新的线程,每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,这个方法是Thread类中最核心的方法,在run()方法里写什么就执行什么,方法run()称为线程体。还可以通过调用Thead类的start()方法来启动一个线程。start()和run()两种方法是有区别的,下谈。
java中怎么要启动一个新的线程:①定义线程类实现Runable接口 ②继承Thread类
//温习面向对象的内容:
// 1.实现该接口必须重写该接口的方法
//2.多态的存在必须满足三个条件
//①继承的存在
//②父类引用指向子类对象
//③重写父类的方法
//实现多线程机制的方法:
// 1.定义一个线程类并且要实现Runnable接口,编译器会自动认出这是一个线程类
// 2.在线程类中重写run()方法,run()方法里的代码就是支线程执行的内容
// 3.创建线程类的一个实例,将实例扔给Thread new实例时的构造方法
// 4.调用Thread实例的start()方法启动一个线程
//实现多线程机制的另一种方法:
// 1.定义一个线程类并且要继承Thread类
// 2.在线程类中重写run()方法并且写上支线程的代码
// 3.由于本身Thread类了,所以不需要new一个Thread类用构造方法把之前的实例扔进去
// 4.直接new出线程类,调用start()方法即可
那么两种实现多线程机制的方法哪种好呢?由于继承是比较死的东西,java不支持多继承,而使用接口实现的话,可以实现多个接口比较灵活,所以推荐在写线程类的时候多使用接口实现的方法。
start()和run()是两种不同的调用方法,start()是真正的多线程并行,而直接调用run()直接简单的调用方法,先执行完run()方法返回到mian方法才能往下执行。PS:多查Java API文档。
线程控制基本方法:
sleep方法:Thread类提供的这个方法可以指定毫秒让线程暂停执行;
join方法:合并某个线程,假设当支线程执行到一半的时候调用了这个方法,就会暂停主线程的执行,等待支线程执行完毕之后返回才开始继续执行主线程;
yield方法:调用这个方法的时候,就让线程暂停一会,让出CPU让其他线程先执行;
线程的优先级别://实现多线程机制的方法:
// 1.定义一个线程类并且要实现Runnable接口,编译器会自动认出这是一个线程类
// 2.在线程类中重写run()方法,run()方法里的代码就是支线程执行的内容
// 3.创建线程类的一个实例,将实例扔给Thread new实例时的构造方法
// 4.调用Thread实例的start()方法启动一个线程
//实现多线程机制的另一种方法:
// 1.定义一个线程类并且要继承Thread类
// 2.在线程类中重写run()方法并且写上支线程的代码
// 3.由于本身Thread类了,所以不需要new一个Thread类用构造方法把之前的实例扔进去
// 4.直接new出线程类,调用start()方法即可
那么两种实现多线程机制的方法哪种好呢?由于继承是比较死的东西,java不支持多继承,而使用接口实现的话,可以实现多个接口比较灵活,所以推荐在写线程类的时候多使用接口实现的方法。
start()和run()是两种不同的调用方法,start()是真正的多线程并行,而直接调用run()直接简单的调用方法,先执行完run()方法返回到mian方法才能往下执行。PS:多查Java API文档。
线程控制基本方法:
sleep方法:Thread类提供的这个方法可以指定毫秒让线程暂停执行;
join方法:合并某个线程,假设当支线程执行到一半的时候调用了这个方法,就会暂停主线程的执行,等待支线程执行完毕之后返回才开始继续执行主线程;
yield方法:调用这个方法的时候,就让线程暂停一会,让出CPU让其他线程先执行;
java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程;
线程调度器按照线程的优先级决定应调度哪个线程来执行;
简单的说,优先级越高的得到CPU时间片的长度就越长,缺省值默认是5;
可以通过调用setPriority方法设置程序的优先级,分别1~10。
简单的说,优先级越高的得到CPU时间片的长度就越长,缺省值默认是5;
可以通过调用setPriority方法设置程序的优先级,分别1~10。
0 0
- Java进阶(多线程机制的基本操作)
- java多线程系列----------- 基本的线程机制(一)
- java多线程系列----------- 基本的线程机制(二)
- Java中的多线程(一)关于线程的基本操作
- java 多线程基本操作总结
- 从头认识java-18.2 基本的线程机制(8)多线程的异常捕捉
- 从头认识java-18.2 基本的线程机制(1)-再识多线程-1
- 从头认识java-18.2 基本的线程机制(1)-再识多线程-2
- Java的多线程机制
- Java的多线程机制
- Java的多线程机制
- Java的多线程机制
- Java的多线程机制
- Java的多线程机制
- java进阶(七)------多线程---多线程操作同一变量
- [Java多线程 二]---线程的状态与基本操作
- [Java多线程 二]---线程的状态与基本操作
- Java反射机制之方法反射的基本操作
- 深入浅出RxJava(基础篇)
- UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
- Hashtable 与HashMap 的区别
- HDU 4325&& nyoj 600 Flowers【线段树+坐标离散化】
- (NO.00004)iOS实现打砖块游戏(十五):导弹发射道具的实现(上)
- Java进阶(多线程机制的基本操作)
- Windows 8安装Open edX
- 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
- Java进阶(synchronized对象锁)
- leetcode Lowest Common Ancestor of a Binary Tree
- 初学Linux的一些理解及简单介绍
- 带你走进ajax(2)
- web项目返回界面的结果显示为乱码的解决方法
- 汉诺塔