多线程相关知识点总结--黄彬

原创 2016年05月31日 12:18:10

在考研的时候,计算机基础也有说到线程和进程,那时候我总是搞不明白啥意思,那我就死记硬背下来,幸亏考试也没考到这个东西,要不然我就死翘翘咯。现在我已经比较明白线程与进程的关系了,下面是我对多线程学习的一些知识点总结,欢迎高手们批评指正哦!
一、线程的概念
1、多线程——指一个程序能并发完成不同的功能。
多线程机制是Java语言重要特性之一,它使得一个Java程序能够同时完成不同的工作任务,而且保证这些任务在实现过程中互不干扰,独立运行,这样就可以提高Java程序的执行效率,缩短程序执行时间。
进程——在计算机操作系统中每一个运行的程序。(即计算机上的软件)
线程——每个进程中包含了多个独立指令序列,每个指令序列可以实现一项功能,那么这些指令序列就是线程。(即软件的任何一种功能)
二、线程的生命周期。
包括新生、就绪、运行、等待、休眠、死亡、阻塞这7种状态。各种关系和定义如下图:
线程生命周期

三、线程的实现方法:
方式1:继承Thread类的方式
格式:

 public class 自定义的线程类名称 extends Thread{
  public void run(){//重写run()方法,这个是固定的写法
........;   //run()方法体具体内容。
}
public static void main(String[] args){
 自定义线程类名称 对象名=new 自定义的线程类名称();//创建线程
 对象名.start();    //启动线程
}
 }

注意:继承Thread类需要重写run()方法,其实run()方法是线程真正功能的体现,即给所创建的线程赋予相应的功能,线程创建好了以后要调用start()方法来启动线程,因为start()方法会自动调用run()方法。
方式二:实现Runnable接口的方式

public class 线程类名称 implements Runnable{ //①实现Runnable接口
@Override
public void run(){//重写run()方法
…….; //run()方法体内容
}
public static void main(String[] args){
Runnable r的对象名=new 线程类名称(); //②创建Runnable对象
Thread 线程对象名=new Thread(r的对象名); //③利用runnable对象创建线程对象
线程对象名.start(); //④启动线程
}
}

四、线程的操作方法:
1、线程名称的设置与获取
名称的设置:public final void setName(String name);
名称的获取:public final void getName();
也就是说,设置:线程对象名.setName(“线程名称”);
获取:线程对象名.getName();
还可以在创建线程的时候设置线程名,在implements Runnable接口的那种创建线程的方式中,Thread 线程对象名=new Thread(r对象名,”线程名字”);

2、线程休眠
通过sleep(time); 是指线程在运行过程中能够被暂停执行。格式:
public static void sleep(long millis); 以毫秒为单位,1000millis=1second
该方法要放在try/catch语句中,报错InterruptedException异常

try{
Thread.sleep(1000);
}
catch(InterruptedException e)
{e.printStackTrace();}

3、线程加入
通过调用join()方法,该方法要放在try/catch语句中。线程加入就是某一线程B可以加入到正在运行的线程A中,使得线程A暂停运行,同时线程B开始运行,直到加入的线程B运行结束,线程A才会继续运行。
即 try{
线程对象名.join();
}
catch(InterruptedException e){
e.printStackTrace();
}

4、线程中断
线程对象通过调用interrupt()方法,该方法可以中断线程,但不能完全终止线程的运行。

public void run(){
…….
try{
Thread.sleep(1000);
…….
}
catch(InterruptedException e){
system.out.println(“线程被中断!”);
}
}
。。。。。。
public static void mian(String[] args){
线程对象名.interrupt();
}

5、判断线程是否启动
在java中提供了isAlive()方法来判断某一线程是否启动。
格式: public final boolean isAlive()
即,public static void main(String[] args){
if(线程对象名.isAlive()){

}
else{
}
}

五、线程管理:
1、线程优先级(优先级高并非总是优先执行)
Java程序中可以所有线程设置线程优先级,其目的是使优先级高的线程优先开始运行,注意,虽然某一个线程设置了较高的优先级,但不是说该线程一定会优先运行,只是说该线程从就绪状态进入运行状态的机会比较大。
线程对象名.setPriority(int num); 数字越大,表示优先级越高,但是数字仅可以在1–10之间。
即:
Thread 线程对象名=new Thread(); //创建线程对象
线程对象名.setPriority(4); //设置优先级别为4,中等偏下一点
线程对象名.start(); //启动线程

2、线程同步:
Java中使用synchronized关键字来实现线程的同步。它会对其所有的区域加锁,而当把对共享资源的操作放在synchronized区域内时,每个线程需要在对这些资源进行操作前获得这个锁,获得锁的线程可以对区域内的资源进行操作,其他线程需要等待该线程执行完毕并且把锁释放后才能获取锁并操作资源。(即,获得了锁就可以进入synchronized区域,也就是此时它能对区域内的资源进行操作了)
线程同步的原理图

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

多线程与并发知识点总结

对于多线程和并发编程这个比较大的技术模块,我们会整理一些帖子方便知识点的梳理,同时会原创视频帮助大家理解线程和并发的各个细节,以及JMM等比较深入的线程内存结构。最终的目的是写好代码。现在以前收藏的帖...

Java中多线程并发体系知识点汇总

java多线程并发体系总结,各种锁,同步方式等。 1、操作系统有两个容易混淆的概念,进程和线程。 进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不...

java中线程相关知识点大总结

一、Java线程:概念与原理 1、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存...

多线程相关知识点

一、多线程之间的通信 方法一 通过访问共享变量的方式(注:需要处理同步问题) 方法二 通过管道流 其中方法一有两种实现方法,即 方法一a)通过内部类实现线程的共享变量 代码如下:...

多线程相关知识点整理

内容:    1 线程的概念

多线程(九):线程相关知识点(创建方式,API,守护线程,状态转换)

介绍了线程的创建方式,守护线程,常用API,以及状态的转换

多线程知识点

  • 2015-09-16 14:35
  • 175KB
  • 下载

JAVA多线程、并发知识点总结

1、java多线程(一个优秀的博客)http://www.cnblogs.com/skywang12345/p/java_threads_category.html2、线程状态图http://www....

Java多线程知识点总结

1.Java中线程的实现 (1)继承Thread类 多线程的定义语法: class 类名称 extends Thread{ //继承Thread类 属性...; //类中定义属性 方法...; /...

多线程知识点简单总结

一、进程与多线程的概念及线程的优点 进程:操作系统的基本运行单元,是程序的一次执行。 线程:在进程中独立运行的子任务。 Eg:QQ是一个进程,则好友视频,下载文件,数据传输等都是线程。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)