(三)并发编程:特殊的一个单线程:主线程(Main线程)
我们常说的主线程就是Main线程,它是一个特殊的单线程,话不多说,直接撸码:
定义一个用于测试的demo类Person
package demo;public class Person {public String name;public Person(String name){this.name=name;}public void run(){int i=1;while (i<5){System.out.println(name+i);i++;}}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
编写main方法
package demo;public class MainThreadDemo {public static void main(String[] args) {Person per=new Person("常威");per.run();Person Per2=new Person("来福");Per2.run();}
}
运行结果就已经很显而易见了,放心我不是靠你们运行结果而是单纯的先分析主线程。
运行结果:常威1常威2常威3常威4来福1来福2来福3来福4
1. 分析主线程原理
2. 单线程的局限性
单线程不仅效率低下,而且存在很大的局限性,惟一的优点就是安全。所以说女孩子长得安全其实也是一种优点,噗哈哈哈…
如何体现出单线程效率低下以及它的局限性呢?其实只要一句代码即可,还是以上面的单线程Main线程为例:
package demo;public class MainThreadDemo {public static void main(String[] args) {Person per=new Person("常威");per.run();int a=6/0; //=====================特别注意这行代码Person Per2=new Person("来福");Per2.run();}
}
如果对上面的运行结果有问题,或者疑问。那没错了,你简直是个天(小)才(白)!真真的天(小)才(白),很有可能异常机制没学好,好吧我给你贴出来:【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!
言归正传,效率低下何以见得?这是数据少,如果是一亿条数据呢,单线程就是一个一个打印。那局限性又何以见得呢?从上面运行结果来看也能看出,只因为一行代码而导致下面代码不再执行。已经很明显了。
补充:主线程的优先级
package fourteen;public class Demo {public static void main(String[] args) {System.out.println(Thread.currentThread().getName()+"优先级:"+Thread.currentThread().getPriority());}
}
运行结果:
main优先级:5
由于线程的优先级别分为三等,由常量值组成,其中10为最高级优先级,5为中级优先级,1为低级优先级,所以主线程属于中级优先级。
(三)并发编程:特殊的一个单线程:主线程(Main线程)相关推荐
- Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)
三.编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包) 写一个测试类:创建一个集合,里面装6个学生(有三个班级class01,class02,class03) 例如:list. ...
- 【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )
文章目录 前言 一.根据不同的线程模式进行不同的线程切换操作 二.完整代码示例 前言 发布线程发布事件之后 , 消息中心需要转发这些事件 , 并执行相应的订阅方法 ; 在转发的过程中 , 需要针对订阅 ...
- python threading-单线程 多线程 主线程 子线程 setDeamon join
python threading-单线程 多线程 主线程 子线程 setDeamon join 单线程 多线程 主线程和子线程 setDaemon() join() 测试多线程下程序运行的时间 创建多 ...
- android 主线程调用,Android 主线程和线程之间相互发送消息
通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带L ...
- QT 主线程子线程互相传值
本文实现了主线程给子线程传值.子线程给主线程传值.主线程子线程的互相传值.线程源文件mythread.h..cpp:主线程文件mainwindow.h..cpp;下面程序先从主线程调用子线程,子线程给 ...
- Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型
一.背景知识 进程即正在执行的一个过程.进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都 ...
- java并发编程基础系列(五): 创建线程的四种方式
线程的创建一共有四种方式: 继承于Thread类,重写run()方法: 实现Runable接口,实现里面的run()方法: 使用 FutureTask 实现有返回结果的线程 使用ExecutorSer ...
- Java并发编程之(二)管程
本博客转载自<奔跑的猪的博客> 本文中的代码可以在github上找到,有需要的请自行下载 标题 定义 维基百科中定义管程为:在并发编程中,管程(monitor)为一个同步结构,具有线程互斥 ...
- 并发编程(六):管程
文章目录 [关于作者] 1.是什么 2.MESA模型 2.1.解决互斥问题 2.2.解决同步问题 wait() 的正确姿势 2.3.Hasen 模型.Hoare 模型和 MESA 模型的核心区别 2. ...
最新文章
- 实例化servlet的几种方式
- CCAI 2020 | 韦峻青:当我们说起自动驾驶
- Apache Maven 入门篇
- LiveVideoStack线上分享第三季(二):对话机器人与儿童电子消费品
- java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
- 计算机入门 姚班,清华“姚班”:学霸中的尖子生,大佬毕业后都去哪了?
- python跳出if条件_带你学python基础:条件控制if与循环语句while、for 以及range函数...
- 华为天才少年一人打造自动驾驶!
- FLOPs和模型参数计算
- 数据提取软件----GetData
- 连上WiFi后,笔记本离路由器比较近时,电脑播音偶尔卡音
- Openproj 在64位操作系统报错errno=193
- BIOS之内存控制器设置以及内存电路接口分析
- 永久消除自动产生的QQPCMgr
- 设置来电铃声android,设置默认来电铃声 android
- PDF如何修改,PDF怎么删除其中一页
- 如何入驻832优选平台
- StringBuffer之间的比较、String和StringBuffer的比较
- 7-7 厘米换算英尺英寸 (10分)
- java生成图片水印
热门文章
- 浅谈如何进行网站结构优化
- 玩战塔英雄不显示服务器,王者荣耀的这个问题,国家点名了仍没有改正过来!战塔英雄就没有...
- 关于sizeof(arr)/sizeof(arr[0])解读(plus细节讲解增加)
- 活码生成器是什么?怎么用活码生成器制作活码?有没有免费的活码生成器?
- 自定义CollapsingToolbaLayout完成可收缩的带头像的Toolbar
- 关于安装李沐深度学习d2l包报错的解决办法(保姆教程)
- 贵州大学计算机类是211吗,贵州大学排名,唯一一所211排名一百以后,本科一批只有两所...
- 0DAY零距离(很经典的一片文章,找了好久)
- 详解EC11编码器示波器波形图
- XManager5连接CentOS7