我所知的线程

Posted sunyi2010

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我所知的线程相关的知识,希望对你有一定的参考价值。

一、原理

进程:一个运行中的应用程序,一个运行的程序在内存中占用的一片区域,也可叫做一个任务;
线程:线程是进程中的一个执行单元,负责调度程序的执行;

一个进程至少需要一个线程,也可能有多个线程,多线程任务,多线程”同时“执行,叫做并行;

多线程是否提高了效率?答:否,而且如果线程开启太多,反倒会降低效率;
但是,为了提高用户体验度,并且因为现在内存越来越大,cpu处理能力越来越强,所以在合理的范围内,多开一定的线程是没关系的;

二、线程的实现方式(两种方式)
1、继承Thread对象
a.继承Thread对象
b.Thread对象中有一个run方法 重写run()方法->run方法中写的代码叫 线程任务
c.创建继承了Thread类的子类的线程对象
d.调用线程对象的start()方法,启动线程,并且java虚拟机调用该线程的run()方法


2、实现Runnable接口
a.实现Runnable接口
b.实现run()方法->线程任务放入到run方法中
c.创建实现了Runnable接口实现类的对象
d.创建线程类,并将实现了Runnable接口实现类的对象,通过线程类的构造方法注入进来
e.调用线程对象的start()方法。启动线程,调用注入对象的run方法,从而在一个新开启
的线程中,执行实现类对象的线程任务

为什么实际开发中使用实现Runnable接口的方式?
(1)继承Thread类,具备单一继承的局限性
(2)继承Thread类,线程对象和线程任务绑定一起了,不利于解耦

run方法和start方法的区别
1.run方法不启动线程,start方法启动线程,并自动调用run方法

以上是关于我所知的线程的主要内容,如果未能解决你的问题,请参考以下文章

pyqt从线程线程发出信号

如果我同时(从多个线程)写入java.util.HashMap会发生什么最糟糕的事情?

JavaScript 多线程

线程安全和静态函数

用简单的程序实现慢速多线程

CUDA 中的非活动线程与断定线程