【多线程】基础知识总结

JAVA中多线程优点

在于取消了主循环/轮询机制。一个线程暂停不影响程序的其他部分。线程在某一操作(用户输入、读取网络数据)时产生的空闲时间可被利用到其他地方。

线程状态

正在运行(Running) --> 挂起(Suspend) --> 恢复(Resume) --> 终止(terminate)。

注意:线程只要获得CPU时间就可运行。挂起后线程临时中断,允许在其中断地方恢复。线程一旦终止就不可被恢复。

wait():告知被调用线程放弃进入管程,进入睡眠,直到其他线程进入相同管程,并且调用notify()。

notify():恢复相同对象第一个调用wait()的线程。
notifyAll():恢复相同对象中所有wait()的线程,优先级最高的先运行。
上述三种方法仅在synchronize方法中才能被调用。

JAVA中创建线程方法

创建线程的方式有两种。 1、继承Thread类 2、实现Runnable接口

继承Thread类
该方法必须重写run()方法,在run()方法中定义需要实现的任务。
创建好线程对象后,调用start()方法去启动线程。注意,不是调用run()方法启动线程,run方法中只是定义需要执行的任务,如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。
若不同线程对象分别调用run()和start()方法,start()方法作为新线程不会阻塞run()方法作为主线程的后续执行。

实现Runnable接口
通过实现Runnable接口,定义了一个子任务,然后将子任务交由Thread去执行。注意,这种方式必须将Runnable作为Thread类的参数,然后通过Thread的start方法来创建一个新线程来执行该子任务。如果调用Runnable的run方法的话,是不会创建新线程的,这根普通的方法调用没有任何区别。

时间: 2024-10-12 12:53:03

【多线程】基础知识总结的相关文章

iOS开发多线程基础知识 NSOperation

-------NSOperation简介---- 1.NSOperation的作用 ·配合使用NSOperation和NSOperationQueue也能实现多线程编程 2.NSOperation和NSOperationQueue实现多线程的具体步骤 ·先将需要执行的操作封装到一个NSOperation对象中 ·然后将NSOperation对象添加到NSOperationQueue中 ·系统会自动将NSOperation中封装的操作放到一条新线程中执行 ---------NSOperation的

java多线程基础知识

1.ThrTest.java 继承Thread类方式 public class ThrTest extends Thread { private String name; public ThrTest() { } public ThrTest(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { System.out.println(name + "运行 " + i

iOS开发多线程基础知识

--------------------------多线程概念基础------- 进程:正在运行的程序 内存:每个进程所占的存储空间 线程:1个进程要像执行任务,必须得有线程,线程是进程的基本执行单元, 线程的串行: ·1个线程中人物的执行是串行的 ·0同一个时间内,1个线程只能执行1个任务 0·线程是进程的一条执行路径 --------多线程 ·一个进程中可以开启多条线程,每条线程可以并行(同时)同时执行不同的任务 ·进程->车间 线程->车间工人 线程的并行: ·进程内多个线程同时执行,可

黑马程序员——java多线程基础知识1

多线程 进程是一个正在执行的程序. cpu在同时执行这些程序,其实是跳跃式的,做快速的切换,时间很短.一个进程可能存在多条路径.迅雷的多路径.每一个进行执行都有一个执行顺序,该顺序是一个执行路径,或这叫一个控制单元.每一个进程至少有一个线程,线程就是进程中的一个独立的控制单元,线程控制进程的执行.jvm启动的时候会有一个进程就叫做java,exe,该进程中至少有一个线程在控制Java程序的执行 ,而且该线程的执行代码在 主函数中.该线程称为主线程.虚拟机至少也有两个线程,一个主线程执行,另一个负

黑马程序员——Java多线程基础知识2

多线程协同 线程间的通讯:我们对资源的操作动作不同,比如说两个卡车一个拉煤一个装煤.但是他们共享了一个资源. 怎么样把这个资源拿出来?怎样把车装满?这个资源当然是一个类,他里面的组成元素就是对象!!现在我们就要有操作对象的思想了,我用对象把这车装满,现在一车装一个对象. 等待唤醒机制: 用的不是sleep是wait.flag标记,这是两人沟通的方式.其实每个标记就要做一次等待或者notify,判断wait,改值notify.线程池.notify唤醒里面的线程,按顺序唤醒.wait和notify必

Java基础知识强化之多线程笔记01:多线程基础知识(详见Android(java)笔记61~76)

1. 基础知识: Android(java)学习笔记61:多线程程序的引入    ~    Android(java)学习笔记76:多线程-定时器概述和使用 

C#中的多线程 - 基础知识

原文:http://www.albahari.com/threading/ 1简介及概念 C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行. 一个 C# 客户端程序(Console 命令行.WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”)是由 CLR 和操作系统自动创建的,并且也可以再创建其它线程.以下是一个简单的使用多线程的例子: 所有示例都假定已经引用了以下命名空间: using System; using System

C#中的多线程 - 基础知识 z

原文:http://www.albahari.com/threading/ 专题:C#中的多线程 1简介及概念Permalink C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行. 一个 C# 客户端程序(Console 命令行.WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”)是由 CLR 和操作系统自动创建的,并且也可以再创建其它线程.以下是一个简单的使用多线程的例子: 所有示例都假定已经引用了以下命名空间: using

多线程基础知识总结

0.并发和并行.进程核线程.多进程和多线程的区别: (这里的时间和时刻上的概念同物理上的一样) 并发:在一段时间内多个任务同时执行,或者说是在一段很短的时间内可以执行多条程序指令,微观上看起来好像是可以同时运行多个进程,单核处理器就可以做到. 并行:在同一时刻多个任务同时执行,或者说是在同一时刻可以执行多条程序指令,多核处理器才可以做到. 进程:进程是程序的一次执行过程,是系统运行程序的基本单位,打开 Windows 的任务管理器就可以看到很多进程. 线程:线程与进程相似,但线程是一个比进程更小

多线程基础知识

file:///Users/jerehedu/Desktop/屏幕快照%202015-06-02%2019.20.12.png 代码如下 #import "ViewController.h" #import "UIImageView+ImageInit.h" @interface ViewController () @property(nonatomic,strong)NSMutableArray * imageViewArray; @property(nonato