一、进程与线程的区别

1.进程是应用程序在内存总分配的空间。(正在运行中的程序)

2.线程是进程中负责程序执行的执行单元、执行路径。

3.一个进程至少有一个线程在负责进程的运行。

4.一个进程中有多个线程在运行的程序,为多线程程序。

5.多线程技术是为了解决多部分代码同时执行。

6.多线程的优点是合理的使用资源。

二、jvm中的多线程

1.jvm中的多线程有很多,其中有负责定义代码运行的线程(这个从main方法开始执行的主线程),也有垃圾回收的线程(因为CPU的切换的不确定所以不定时执行。或者达到某个条件下执行)。

2.多线程的运行的根据CPU的切换完成的,也就是说怎么切换CPU说了算,所以多线程运行是随机的(CPU快速切换造成的)。

3.每次运行结果不一定相同,因为随机性造成的。

4.没一个线程都有运行的代码内容。这个称为线程的任务。创建一个线程就是为了去运行指定的任务代码。

三、创建多线程的方法

1.继承Thread类.

2.覆盖run( )方法。

3.创建子类对象、创建子类线程。

4.调用Thread类中的start( )方法,来执行线程。

start( )开启线程后,都会执行run方法。说明run( )方法中存储的是线程要运行的代码。所以自定义线程的任务代码都存储在run( )方法中。

四、Thread.currentThread().getName()可以查看当前正在运行线程的名称

五、调用start( )和调用run( )方法的区别

调用start会开启线程,让开启的线程去执行run( )方法中的线程任务。

直接调用run方法,线程并未开启,去执行run方法的只有主线程。

六、多线程代码(一)

 //继承多线程方法Thread
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name;
}
//重写run( )方法
public void run()
{
show();
}
//需要执行的show( )方法
public void show()
{
for (int x=1;x<=10;x++)
{
System.out.println(name+"x ="+x);
}
}
} class ThreadDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo("xianghong");
Demo d2 = new Demo("xiaoming");
//开启线程,调用run( )方法
d1.start();
d2.start();
//需要执行的主线程
for (int x=1; x<=10; x++)
{
System.out.println("main......"+x);
}
}
}

执行结果

七、多线程代码(二)

 //继承多线程方法Thread
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name;
}
//重写run( )方法
public void run()
{
show();
}
//需要执行的show( )方法
public void show()
{
for (int x=1;x<=10;x++)
{
//getName()显示的是默认的名称
//System.out.println(getName()+"..."+name+"x ="+x);
//Thread.currentThread().getName()当前正在运行线程的名称
System.out.println(Thread.currentThread().getName()+"..."+name+"x ="+x);
}
}
} class ThreadDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo("xianghong");
Demo d2 = new Demo("xiaoming");
//开启线程,调用run( )方法
d1.start();
d2.start();
//需要执行的主线程
for (int x=1; x<=10; x++)
{
System.out.println(Thread.currentThread().getName()+"......"+x);
}
}
}

执行结果

Java多线程原理及Thread类的使用的更多相关文章

  1. java 多线程3:Thread类中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  2. Java多线程系列二——Thread类的方法

    Thread实现Runnable接口并实现了大量实用的方法 public static native void yield(); 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机 ...

  3. “全栈2019”Java多线程第二章:创建多线程之继承Thread类

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. Java多线程专题3: Thread和ThreadLocal

    合集目录 Java多线程专题3: Thread和ThreadLocal 进程, 线程, 协程的区别 进程 Process 进程提供了执行一个程序所需要的所有资源, 一个进程的资源包括虚拟的地址空间, ...

  5. Java并发编程:Thread类的使用

    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...

  6. Java多线程之线程其他类

    Java多线程之线程其他类 实际编码中除了前面讲到的常用的类之外,还有几个其他类也有可能用得到,这里来统一整理一下: 1,Callable接口和Future接口 JDK1.5以后提供了上面这2个接口, ...

  7. Java多线程4:Thread中的静态方法

    一.Thread类中的静态方法 Thread类中的静态方法是通过Thread.方法名来调用的,那么问题来了,这个Thread指的是哪个Thread,是所在位置对应的那个Thread嘛?通过下面的例子可 ...

  8. 【转】Java并发编程:Thread类的使用

    一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以 ...

  9. 3、Java并发编程:Thread类的使用

    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...

随机推荐

  1. Apache Shiro学习-2-Apache Shiro Web Support

     Apache Shiro Web Support  1. 配置 将 Shiro 整合到 Web 应用中的最简单方式是在 web.xml 的 Servlet ContextListener 和 Fil ...

  2. Linux学习---Linux目录结构说明

    1./- 根 每一个文件和目录从根目录开始. 只有root用户具有该目录下的写权限.请注意,/root是root用户的主目录,这与/.不一样 2./bin中 - 用户二进制文件 包含二进制可执行文件. ...

  3. jQuery学习之jQuery Ajax用法详解(转)

    jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...

  4. 使用ES(elasticsearch) 搜索引擎

    介绍  https://blog.csdn.net/andyzhaojianhui/article/details/75195296 创建语句 { "company":{ &quo ...

  5. WdatePicker.js的使用方法 帮助文档 使用说明(时间控件)

    WdatePicker.js的使用方法 帮助文档 使用说明(时间控件)   4. 日期范围限制 静态限制 注意:日期格式必须与 realDateFmt 和 realTimeFmt 一致 你可以给通过配 ...

  6. svn版本分支及冲突解决笔记

    转载:http://blog.csdn.net/xuguiyi100/article/details/51966557 分支合并主干示例 1.主干工程右键选择merge合并下一步 2.选中merge ...

  7. Qt Application Menu In Window and Mac

    Application Menu Application menu in different operator systems has different designed style. like W ...

  8. Associate File Type with Qt In Mac Os and Win

    Win Registry Question One day, my boss want me to finish one function which let the users can double ...

  9. python 类函数

    81定义: class 类名(object):# __init__(self, 参数列表):    # __init__叫构造函数,其作用:使用类实例对象时,自动调用_init_,起到对象进行初始化, ...

  10. 布局xml文件不能预览

    原因:xml文件里,有一些值没有设置属性. 如: <LinearLayout                           android:layout_width="fill_ ...