java线程详解(java多线程/磁盘IO过程详解:为什么说多线程)

2024-10-14 03:50:28 6

java线程详解(java多线程/磁盘IO过程详解:为什么说多线程)

其实java线程详解的问题并不复杂,但是又很多的朋友都不太了解java多线程/磁盘IO过程详解:为什么说多线程,因此呢,今天小编就来为大家分享java线程详解的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

java多线程/磁盘IO过程详解:为什么说多线程

磁盘IO的速度在那里了,就算你再多的线程,也绕不过IO瓶颈。不是说多线程不能提高效率,这个要看你项目的性能瓶颈在哪里。 IO密集型,没必要多线程,容易弄巧成拙。建议Cache,某些文件系统在顺序读或写磁盘时速度相当快,如果恰好文件是顺序存储在磁盘上的,建议先尽量读进内存,再一次性写出去。其他什么磁盘内存通道之类的底层技术就不是Java能左右的了。

关于java线程中static关键字

有要详解static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。 static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。 static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为: 类名.静态方法名(参数列表...) 类名.静态变量名 用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块(用处非常大,呵呵)。 1、static变量  按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:  对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。  对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 所以一般在需要实现以下两个功能时使用静态变量: 在对象之间共享值时 方便访问变量时2、静态方法 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆!!! 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的 3、static代码块  static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。例如: public class Test5 { private static int a; private int b; static{ Test5.a=3; System.out.println(a); Test5 t=new Test5(); t.f(); t.b=1000; System.out.println(t.b); } static{ Test5.a=4; System.out.println(a); } public static void main(String args) { // TODO 自动生成方法存根 } static{ Test5.a=5; System.out.println(a); } public void f(){ System.out.println("hhahhahah"); } } 运行结果: 3 hhahhahah 1000 4 5  利用静态代码块可以对一些static变量进行赋值,最后再看一眼这些例子,都一个static的main方法,这样JVM在运行main方法的时候可以直接调用而不用创建实例。 4、static和final一块用表示什么 static final用来修饰成员变量和成员方法,可简单理解为“全局常量”! 对于变量,表示一旦给值就不可修改,并且通过类名可以访问。 对于方法,表示不可覆盖,并且可以通过类名直接访问。有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条限制: • 它们仅能调用其他的static 方法。 • 它们只能访问static数据。 • 它们不能以任何方式引用this 或super(关键字super 与继承有关,在下一章中描述)。 如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块: // Demonstrate static variables,methods,and blocks. class UseStatic { static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); } static { System.out.println("Static block initialized."); b = a * 4; } public static void main(String args) { meth(42); } } 一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。 注意:在一个static 方法中引用任何实例变量都是非法的。 下面是该程序的输出: Static block initialized. x = 42 a = 3 b = 12 在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式: classname.method( ) 这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。一个static变量可以以同样的格式来访问——类名加点号运算符。这就是Java 如何实现全局功能和全局变量的一个控制版本。 下面是一个例子。在main() 中,static方法callme() 和static 变量b在它们的类之外被访问。 class StaticDemo { static int a = 42; static int b = 99; static void callme() { System.out.println("a = " + a); } } class StaticByName { public static void main(String args) { StaticDemo.callme(); System.out.println("b = " + StaticDemo.b); } } 下面是该程序的输出: a = 42 b = 99 static成员是不能被其所在class创建的实例访问的。 如果不加static修饰的成员是对象成员,也就是归每个对象所有的。 加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的

Runnable接口详解

在Java中,“线程”指两件不同的事情:1、java.lang.Thread类的一个实例;2、线程的执行。使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。线程总体分两类:用户线程和守候线程。当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。

java main 线程既然被中断 为什么还会运行后面的

我觉得这个例子主要涉及到以下几个问题:

1.对interrupt()、isInterrupted()的理解。为什么BCD要运行呢?因为CPU在转线程又没有阻塞也没有转到其他语句,他当然要往下执行。我的理解是interrupt()是抛出一个消息,“要求”调用他的进程中断,他只是负责发出要求,具体执行由其他语句实现。所以这个语句出现进程不会中断。

2. t.sleep(2000)之前,没有语句实现中断,所以这个状态(或者说这个“中断要求”)一直存在, t.sleep(2000)中响应了这个要求(所以你看执行中间【没有】暂停2秒),所以这个状态(或者说这个“中断要求”)就没有了,在D里面就是false了。

3.对异常的理解。那么是怎么实现中断的效果呢?我的理解是通过异常。比如这个例子,发出中断信号过后,你调用t.sleep(2000),这个t.sleep(2000)里面封装了一个东西,他收到了这个信号就向外抛出了一个InterruptedException ,交给try.catch,通过try.catch对异常的转接,【System.out.println("线程被中断了");】就被执行了。其实我觉得你这里不应该输出,而应该写sleep的,因为人家异常是要求你中断。

4.为什么到最后的D那段会显示线程又运行了?这个是对对语句执行的理解问题。方法执行的返回(或者你理解方法里执行的终止)仅限于以下情况:A.执行return语句;B.所有语句执行完毕;C.抛到方法外的异常(run()除外,因为异常不能抛到run()外面去),这里是有异常,但是他没有抛到外面去,所以要继续执行后面的。

总结一下吧,就是语句都是会被执行的,除非你把他的执行顺序改到其他方向去了,或者按照顺序语句执行终了。改顺序的措施包括return(方法里面的语句执行完毕)和通过异常处理选择。

多看看API吧。我的建议是遇到问题就去看API。 

欢迎采纳。

以上就是我们为大家找到的有关“java线程详解(java多线程/磁盘IO过程详解:为什么说多线程)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

java线程详解(java多线程/磁盘IO过程详解:为什么说多线程)

本文编辑:admin

更多文章:


margin属性是什么意思(Margin,Border,Padding属性的区别和联系)

margin属性是什么意思(Margin,Border,Padding属性的区别和联系)

本文目录Margin,Border,Padding属性的区别和联系margin和padding是什么意思各有什么缺点Margin,Border,Padding属性的区别和联系margin 简写属性在一个声明中设置所有外边距属性。该属性可以有

2023年11月22日 07:41

microbit编程(想让孩子学习编程,可以在家自学吗有哪些需要注意的问题)

microbit编程(想让孩子学习编程,可以在家自学吗有哪些需要注意的问题)

本文目录想让孩子学习编程,可以在家自学吗有哪些需要注意的问题孩子学习编程,有不懂的问题,总会来问我,可是我确实不会编程,该怎么帮孩子解答Arduino是否适合少儿使用那micri:bit呢机器人编程用哪种编程软件或语言的多想让孩子学习编程,

2023年8月7日 19:40

index什么意思翻译中文(Index 的翻译是:是什么意思)

index什么意思翻译中文(Index 的翻译是:是什么意思)

大家好,如果您还对index什么意思翻译中文不太了解,没有关系,今天就由本站为大家分享index什么意思翻译中文的知识,包括Index 的翻译是:是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Index

2024年9月27日 05:40

游戏开发指南(有什么HTML5游戏开发方面的书)

游戏开发指南(有什么HTML5游戏开发方面的书)

本文目录有什么HTML5游戏开发方面的书unity5.x游戏开发指南这本书怎样游戏开发指南by我爱厨房全本txt在线小说免费阅读有什么HTML5游戏开发方面的书个人赶脚学html5(无论是不是游戏开发方面)不用买书,在网上就可以学,网上有很

2024年7月2日 09:05

asp教程 下载(哪有好的C#和asp.net视频教程下载)

asp教程 下载(哪有好的C#和asp.net视频教程下载)

本文目录哪有好的C#和asp.net视频教程下载求陶益asp+Dreamweaver制作动态网页VIP教程下载哪有好的C#和asp.net视频教程下载微软的不适合初学者;你百度搜索"牛腩新闻发布系统"的视频教程;共63集;看完之后绝对对你是

2024年7月22日 07:05

c语言炫彩圣诞树代码(C语言:用for循环嵌套怎么输出这种圣诞树)

c语言炫彩圣诞树代码(C语言:用for循环嵌套怎么输出这种圣诞树)

本文目录C语言:用for循环嵌套怎么输出这种圣诞树C语言,怎么使打出的代码是彩色的C语言:用for循环嵌套怎么输出这种圣诞树public class NewTree { /** * @param args */ public static

2024年7月24日 13:29

手机平面设计制图软件(手机平面画图软件哪个好,平面设计画图app排行榜)

手机平面设计制图软件(手机平面画图软件哪个好,平面设计画图app排行榜)

这篇文章给大家聊聊关于手机平面设计制图软件,以及手机平面画图软件哪个好,平面设计画图app排行榜对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录手机平面画图软件哪个好,平面设计画图app排行榜手机绘图软件哪个好手机上用什么软件

2024年8月26日 16:20

php基础班(php有基础自学好还是参加培训班好)

php基础班(php有基础自学好还是参加培训班好)

本文目录php有基础自学好还是参加培训班好为什么传智PHP培训要分为基础班和就业班个人能力需不需要报php班,是基础还是就业班php有基础自学好还是参加培训班好很多人,尤其是零基础小白想通过网上找资料看视频教程的方法来自学,但是存在的问题是

2024年7月12日 11:18

如何调出电脑菜单栏(电脑下面的菜单不见了 几种方法介绍)

如何调出电脑菜单栏(电脑下面的菜单不见了 几种方法介绍)

本文目录电脑下面的菜单不见了 几种方法介绍电脑怎么没有菜单栏电脑下面的菜单不见了 几种方法介绍1、使用百度电脑专家进行修复,在百度中键入“win8任务栏不见了”即可搜索到百度电脑专家的一键修复方案,点击“一键安 装修 复”即可解决问题。在M

2024年3月11日 16:15

apache 虚拟主机(什么是虚拟主机,apache 虚拟主机)

apache 虚拟主机(什么是虚拟主机,apache 虚拟主机)

本文目录什么是虚拟主机,apache 虚拟主机apache虚拟主机配置apache有哪两种虚拟主机的方式apache的虚拟主机什么是虚拟主机,apache 虚拟主机apache虚拟主机一般是php语言的网站程序搭建的一个环境,你需要apac

2024年7月9日 01:42

接口文档管理工具(求一个文档管理软件)

接口文档管理工具(求一个文档管理软件)

本文目录求一个文档管理软件文档管理系统哪个好用有什么好的在线接口管理工具么有没有比较好的企业文档管理软件,求推荐!有没有开源的java的接口文档管理工具求一个文档管理软件为什么要使用文档管理软件?在信息化的今天,企业/个人每天都会形成一些重

2024年5月17日 05:13

补码的最小负数(定点小数补码的最小负数)

补码的最小负数(定点小数补码的最小负数)

本文目录定点小数补码的最小负数无论补码用几个字节存储,其纯小数的最小值一定是-1负数补码最后一位如何得到,即负数最小值已知机器字长16位补码能表示的最大正数和最小负数5位二进制定点小叔,用补码表示时,最小负数是已知是1.0000,求过程的绝

2024年7月21日 06:35

java接口案例(java远程调用接口的原理和范例,谢谢)

java接口案例(java远程调用接口的原理和范例,谢谢)

各位老铁们好,相信很多人对java接口案例都不是特别的了解,因此呢,今天就来为大家分享下关于java接口案例以及java远程调用接口的原理和范例,谢谢的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录java远程调

2024年8月3日 11:15

hamburger是什么意思中文(hamburger翻译成中文)

hamburger是什么意思中文(hamburger翻译成中文)

本文目录hamburger翻译成中文汉堡包英文是什么hamburger什么意思中文翻译hamburger中文翻译hamburger的中文意思汉堡包用英语怎么说hamburger翻译中文是什么意思hamburgur是什么意思中文翻译是什么意思

2024年7月15日 05:11

《西游记》狮驼岭三个怪物分别欺骗了悟空什么内容悟空相信与否(用原文回答)以及当时悟空的性格?《西游记》狮驼岭原著怎么描述的

《西游记》狮驼岭三个怪物分别欺骗了悟空什么内容悟空相信与否(用原文回答)以及当时悟空的性格?《西游记》狮驼岭原著怎么描述的

本文目录《西游记》狮驼岭三个怪物分别欺骗了悟空什么内容悟空相信与否(用原文回答)以及当时悟空的性格《西游记》狮驼岭原著怎么描述的狮驼岭真实还原图 尸山血海真实场景(原著多恐怖)《西游记 》狮驼岭原著怎么描述的西游记狮驼岭原著内容《西游记》狮

2024年7月23日 19:16

进程是一段程序的执行过程(一个进程就是一个程序吗只能有一个cpu运行吗)

进程是一段程序的执行过程(一个进程就是一个程序吗只能有一个cpu运行吗)

其实进程是一段程序的执行过程的问题并不复杂,但是又很多的朋友都不太了解一个进程就是一个程序吗只能有一个cpu运行吗,因此呢,今天小编就来为大家分享进程是一段程序的执行过程的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本

2024年9月6日 01:25

truncate记录日志吗(SQL Server中truncate,delete和drop的异同点)

truncate记录日志吗(SQL Server中truncate,delete和drop的异同点)

本文目录SQL Server中truncate,delete和drop的异同点mysql truncate 操作会记录在binlog中吗oracle drop,truncate 数据产生日志吗 如果每天要重另外数据库重新导入1000W左右,

2024年7月5日 20:25

png图像格式的特点(什么是png图片格式)

png图像格式的特点(什么是png图片格式)

各位老铁们好,相信很多人对png图像格式的特点都不是特别的了解,因此呢,今天就来为大家分享下关于png图像格式的特点以及什么是png图片格式的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录什么是png图片格式PN

2024年7月11日 18:15

如何用css显示一个图片中多个小图标?怎样用CSS给网站title加小图标

如何用css显示一个图片中多个小图标?怎样用CSS给网站title加小图标

本文目录如何用css显示一个图片中多个小图标怎样用CSS给网站title加小图标纯纯css如何hover之后变成动态图标呢利用CSS border实现三角形图标效果及原理解释CSS之字体图标 icon 的多种实现css中列表的图标如何去除如

2024年6月29日 13:55

05网寒假作业答案(寒假作业答案在哪找)

05网寒假作业答案(寒假作业答案在哪找)

各位老铁们好,相信很多人对05网寒假作业答案都不是特别的了解,因此呢,今天就来为大家分享下关于05网寒假作业答案以及寒假作业答案在哪找的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录寒假作业答案在哪找小学五年级寒

2024年10月23日 16:55

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索