电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

Java程序高手进阶之Java19的新特性介绍

  • 资源ID:337994252       资源大小:106.43KB        全文页数:8页
  • 资源格式: PDF        下载积分:0金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要0金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

Java程序高手进阶之Java19的新特性介绍

序序本文主要讲述一下Java19的新特性版本号版本号java-versionopenjdk version 19 2022-09-20OpenJDK Runtime Environment(build 19+36-2238)OpenJDK 64-Bit Server VM(build 19+36-2238,mixed mode,sharing)从version信息可以看出是build 19+36特性列表特性列表JEP 405:Record Patterns(Preview)JEP 405:Record Patterns(Preview)instanceof的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16JEP 转正394:Pattern Matching for instanceofswitch模式匹配在JDK17的引入作为JEP 406:Pattern Matching for switch(Preview)preview版本,在JDK18的作为第JEP 420:Pattern Matching for switch(Second Preview)二轮的preview针对record类型,引入instance of可以这么写record Point(int x,int y)static void printSum(Object o)if(o instanceof Point p)int x=p.x();int y=p.y();System.out.println(x+y);现在可以这么写record Point(int x,int y)void printSum(Object o)if(o instanceof Point(int x,int y)System.out.println(x+y);比较复杂的例子:record Point(int x,int y)enum Color RED,GREEN,BLUE record ColoredPoint(Point p,Color c)record Rectangle(ColoredPoint upperLeft,ColoredPoint lowerRight)Rectangle r=new Rectangle(new ColoredPoint(new Point(x1,y1),c1),new ColoredPoint(new Point(x2,y2),c2);static void printXCoordOfUpperLeftPointWithPatterns(Rectangle r)if(r instanceof Rectangle(ColoredPoint(Point(var x,var y),var c),var lr)System.out.println(Upper-left corner:+x);如果是泛型record的话:record Box(T t)static void test1(Box bo)if(bo instanceof Box(String s)System.out.println(String +s);static void test2(Box bo)if(bo instanceof Box(var s)System.out.println(String +s);JEP 422:Linux/RISC-V PortJEP 422:Linux/RISC-V PortRISC-V是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),这个JEP则移植JDK到RISC-V上JEP 424:Foreign Function&Memory API(Preview)JEP 424:Foreign Function&Memory API(Preview)Foreign Function&Memory(FFM)API包含了两个incubating APIJDK14的引入了Foreign-Memory Access JEP 370:Foreign-Memory Access API(Incubator)API作为incubatorJDK15的Foreign-Memory JEP 383:Foreign-Memory Access API(Second Incubator)Access API作为第二轮incubatorJDK16的作为第三轮,它引入了JEP 393:Foreign-Memory Access API(Third Incubator)Foreign Linker API(JEP)389FFM API在JDK 17的作为incubatorJEP 412:Foreign Function&Memory API(Incubator)引入FFM API在JDK 18的作为第JEP 419:Foreign Function&Memory API(Second Incubator)二轮incubatorJDK19的这个JEP则将FFM API作为preview API使用示例/1.Find foreign function on the C library pathLinker linker=Linker.nativeLinker();SymbolLookup stdlib=linker.defaultLookup();MethodHandle radixSort=linker.downcallHandle(stdlib.lookup(radixsort),.);/2.Allocate on-heap memory to store four stringsString javaStrings =mouse,cat,dog,car;/3.Allocate off-heap memory to store four pointersSegmentAllocator allocator=SegmentAllocator.implicitAllocator();MemorySegment offHeap =allocator.allocateArray(ValueLayout.ADDRESS,javaStrings.length);/4.Copy the strings from on-heap to off-heapfor(int i=0;i javaStrings.length;i+)/Allocate a string off-heap,then store a pointer to it MemorySegment cString=allocator.allocateUtf8String(javaStringsi);offHeap.setAtIndex(ValueLayout.ADDRESS,i,cString);/5.Sort the off-heap data by calling the foreign functionradixSort.invoke(offHeap,javaStrings.length,MemoryAddress.NULL,0);/6.Copy the(reordered)strings from off-heap to on-heapfor(int i=0;i executor.submit()-Thread.sleep(Duration.ofSeconds(1);return i;););/executor.close()is called implicitly,and waits如上使用了少数几个OS线程来运行10000个虚拟线程虚拟线程在超过上千个非CPU密集并发任务场景可以显著提升系统的吞吐率void handle(Request request,Response response)var url1=.var url2=.try(var executor=Executors.newVirtualThreadPerTaskExecutor()var future1=executor.submit()-fetchURL(url1);var future2=executor.submit()-fetchURL(url2);response.send(future1.get()+future2.get();catch(ExecutionException|InterruptedException e)response.fail(e);String fetchURL(URL url)throws IOException try(var in=url.openStream()return new String(in.readAllBytes(),StandardCharsets.UTF_8);像这种场景虽然是block的代码,但是因为引入的是虚拟线程,系统可以很好地伸缩;当虚拟线程block在IO或者其他操作()时,虚拟线程会从Thread BlockingQueue.take()unmount,当操作完成才重新mount上继续执行。不过有些操作不会unmount虚拟线程,会一同thread和底层的OS线程一起block住(比如进入synchronized代码块/方法,比如执行一个native方法或者foreign function)。虚拟线程开销不大,因而不需要使用池化技术使用可以以json格式来jcmd Thread.dump_to_file-format=json dump虚拟线程,实例如下Thread.Builder,Thread.ofVirtual(),Thread.ofPlatform()可以用来创建虚拟线程或者是平台线程,比如Thread thread=Thread.ofVirtual().name(duke).unstarted(runnable);Thread.startVirtualThread(Runnable)等同于创建和启动虚拟线程Thread.threadId()作为final方法会返回线程标识,而非final的Thread.getId()则被废弃Thread.getAllStackTraces()现在返回的是平台线程而非所有线程JEP 426:Vector API(Fourth Incubator)JEP 426:Vector API(Fourth Incubator)JDK16引入了提供了jdk.incubator.vector来用于矢量计JEP 338:Vector API(Incubator)算JDK17进行改进并作为第二轮的incubatorJEP 414:Vector API(Second Incubator)JDK18的进行改进并作为第三轮的incubator,而JEP 417:Vector API(Third Incubator)JDK19则作为第四轮的incubatorJEP 427:Pattern Matching for switch(Third Preview)JEP 427:Pattern Matching for switch(Third Preview)instanceof的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16转正JDK17引入JEP 406:Pattern Matching for switch(Preview)JDK18的则作为第二轮的JEP 420:Pattern Matching for switch(Second Preview)preview,JDK19作为第三轮previewJEP 428:Structured Concurrency(Incubator)JEP 428:Structured Concurrency(Incubator)结构化并发也是JDK19的一个重要特性。JDK5引入的ExecutorService可以用于并行处理任务,比如R

注意事项

本文(Java程序高手进阶之Java19的新特性介绍)为本站会员(j***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

分享当前资源【Java程序高手进阶之Java19的新特性介绍】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
二维码
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------



关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.