Java多线程原理及Thread类的使用
一、进程与线程的区别
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类的使用的更多相关文章
- java 多线程3:Thread类中的静态方法
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...
- Java多线程系列二——Thread类的方法
Thread实现Runnable接口并实现了大量实用的方法 public static native void yield(); 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机 ...
- “全栈2019”Java多线程第二章:创建多线程之继承Thread类
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- Java多线程专题3: Thread和ThreadLocal
合集目录 Java多线程专题3: Thread和ThreadLocal 进程, 线程, 协程的区别 进程 Process 进程提供了执行一个程序所需要的所有资源, 一个进程的资源包括虚拟的地址空间, ...
- Java并发编程:Thread类的使用
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
- Java多线程之线程其他类
Java多线程之线程其他类 实际编码中除了前面讲到的常用的类之外,还有几个其他类也有可能用得到,这里来统一整理一下: 1,Callable接口和Future接口 JDK1.5以后提供了上面这2个接口, ...
- Java多线程4:Thread中的静态方法
一.Thread类中的静态方法 Thread类中的静态方法是通过Thread.方法名来调用的,那么问题来了,这个Thread指的是哪个Thread,是所在位置对应的那个Thread嘛?通过下面的例子可 ...
- 【转】Java并发编程:Thread类的使用
一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以 ...
- 3、Java并发编程:Thread类的使用
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
随机推荐
- YARN 多租户资源池配置
简介: YARN 多租户资源池配置 当多用户同在一个 hadoop 集群作业时,就需要对资源进行有效的限制,例如区分测试.正式资源等 一.查看默认资源池 # 访问:http://192.168.1.2 ...
- proxmox 去除订阅提示
去掉登陆时是否订阅通知修改文件 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js 搜索关键字 “You do not have ...
- CompletionPort
[CompletionPort] 1.CreateIoCompletionPort.此方法用于创建与绑定.此方法调用后,socket即退出,只能通过CompletionKey来辨认是哪个socket的 ...
- nginx反向代理同一主机多个网站域名
nginx反向代理同一ip多个域名,给header加上host就可以了 proxy_set_header Host $host; nginx.conf例子 upstream ...
- jmeter 常用函数
${__Random(10000000,19999999,str)};vars.put("msisdn","182"+${__evalVar(str)});
- 使用透明flash+背景图片制作绚丽页面
关键代码: <div style="width: 469px; height: 303px; background-image: url('https://images0.cnblog ...
- 邮槽 匿名管道 命名管道 剪贴板 进程通讯 转自http://www.cnblogs.com/kzloser/archive/2012/11/04/2753367.html#
邮槽 通信流程: 服务器 客户端 注意: 邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输 邮槽可以实现一对多的单向通信,我们可以利用这个特点编写一个网络会议通知系统,而且实现这一的系 ...
- SFTP 安装与配置
SFTP 安装与配置 sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH 的一部分,由于这种 ...
- linux git server 简易搭建 (ssh访问)
git的服务器搭建,如果无需权限控制,仅团队内部使用,初始化一个服务器仓库,其他人通过ssh访问这个文件夹即可.如需复杂的管理,建议使用gitlab. yum install git -y id gi ...
- Chrome Command Line API 参考