Java 多线程
2019-11-05 09:51:00来源:博客园 阅读 ()
Java 多线程
进程与线程
进程: 指在内存中运行的应用程序, 每个进程在内存里拥有自己的内存空间
线程: 线程是进程中的执行单元, 负责当前进程中程序的执行(真正干事的是线程)
简而言之: 一个应用程序运行后至少有一个进程, 一个进程可以包含多个线程
并发与并行:
-
-
并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的
Thread 类
java 线程属于抢占式调度, 哪个线程的优先级高, 哪个线程优先执行, 同一个优先级, 随机执行
多个线程之间互不影响 (???这里还不够具体)
创建线程的两种方法:
-
-
实现 Runnable 接口的类, 然后实现 run 方法
demo:
public class Main { public static void main(String[] args) { MyTread mt1 = new MyTread(); mt1.start(); for (int i=1; i<=20; i++) { System.out.println("main" + i); } } } class MyTread extends Thread { @Override public void run(){ for (int i=0; i<20; i++) { System.out.println("run" + i); } } }
获取/设置线程名称
获取名称:
-
-
static Thread currentThread(): 返回当前正在执行的线程对象的引用
设置名称:
-
-
Thread(String name): 调用父类的构造方法 , 传入线程名称
获取名称:
public class Main { public static void main(String[] args) { MyTread mt1 = new MyTread(); mt1.start(); System.out.println("name: " + Thread.currentThread().getName()); } } class MyTread extends Thread { @Override public void run(){ System.out.println("name: "+ Thread.currentThread().getName()); } } 运行结果: name: main name: Thread-0
设置名称:
public class Main { public static void main(String[] args) { MyTread mt1 = new MyTread(); System.out.println(mt1.getName()); mt1.start(); // 更改线程名称 mt1.setName("打印线程222222"); System.out.println(mt1.getName()); } } class MyTread extends Thread { public MyTread(){ super("打印线程1"); } @Override public void run(){} } 运行结果: 打印线程1 打印线程222222
实现 Runnable 接口, 开启多线程:
public class Main { public static void main(String[] args) { // 创建一个 Runnable 接口的实现类对象 RunnableImpl run = new RunnableImpl(); // 创建 Thread 类对象, 构造方法中传入 Runnable 实现类对象 Thread mt = new Thread(run); mt.start(); } } class RunnableImpl implements Runnable{ @Override public void run(){ System.out.println(Thread.currentThread().getName()); } }
-
一个类只能继承一个类, 而一个类可以实现多个接口(实现了 Runnable 接口, 还能实现其它的接口 , 继承其它的类)
-
增强程序的扩展性, 降低耦合性(解耦合)
实现 Runnable 接口的方式, 把设置线程任务和开启新线程进行了分离
实现类中, 重写了 run 方法: 用来设置线程任务
创建 Thread 类对象, 传入 run 方法, 开启线程
ending ~
原文链接:https://www.cnblogs.com/kaichenkai/p/11798690.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:将字符串转换为字符数组。
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash