新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)java中有哪些實(shí)現(xiàn)多線程的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
特克斯ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
常用的java框架有哪些
1.SpringMVC,Spring Web MVC是一種基于Java的實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架。2.Shiro,Apache Shiro是Java的一個(gè)安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個(gè)分布式服務(wù)框架。5.Maven,Maven是個(gè)項(xiàng)目管理和構(gòu)建自動(dòng)化工具。6.RabbitMQ,RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。7.Ehcache,EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架。
1、lambda表達(dá)式創(chuàng)建線程
使用lambda的形式實(shí)例化線程任務(wù)類,創(chuàng)建線程對(duì)象,并將線程任務(wù)類作為構(gòu)造方法參數(shù)傳入。
package com.kingh.thread.create; public class CreateThreadDemo5_Lambda { public static void main(String[] args) throws Exception { // 使用lambda的形式實(shí)例化線程任務(wù)類 Runnable task = () -> { while (true) { // 輸出線程的名字 printThreadInfo(); } }; // 創(chuàng)建線程對(duì)象,并將線程任務(wù)類作為構(gòu)造方法參數(shù)傳入 new Thread(task).start(); // 主線程的任務(wù),為了演示多個(gè)線程一起執(zhí)行 while (true) { printThreadInfo(); Thread.sleep(1000); } } /** * 輸出當(dāng)前線程的信息 */ private static void printThreadInfo() { System.out.println("當(dāng)前運(yùn)行的線程名為: " + Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (Exception e) { throw new RuntimeException(e); } } }
2、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程
可以返回值的任務(wù)必須是Callable接口,類似的,沒有返回值的任務(wù)必須是Runnable接口。執(zhí)行Callable任務(wù)后,可以獲得一個(gè)Future對(duì)象,通過調(diào)用get可以獲得Callable任務(wù)返回的Object,然后結(jié)合線程池接口ExecutorService可以實(shí)現(xiàn)傳說(shuō)中有返回結(jié)果的多線程。
import java.util.concurrent.*; import java.util.Date; import java.util.List; import java.util.ArrayList; /** * 有返回值的線程 */ @SuppressWarnings("unchecked") public class Test { public static void main(String[] args) throws ExecutionException, InterruptedException { System.out.println("----程序開始運(yùn)行----"); Date date1 = new Date(); int taskSize = 5; // 創(chuàng)建一個(gè)線程池 ExecutorService pool = Executors.newFixedThreadPool(taskSize); // 創(chuàng)建多個(gè)有返回值的任務(wù) Listlist = new ArrayList (); for (int i = 0; i < taskSize; i++) { Callable c = new MyCallable(i + " "); // 執(zhí)行任務(wù)并獲取Future對(duì)象 Future f = pool.submit(c); // System.out.println(">>>" + f.get().toString()); list.add(f); } // 關(guān)閉線程池 pool.shutdown(); // 獲取所有并發(fā)任務(wù)的運(yùn)行結(jié)果 for (Future f : list) { // 從Future對(duì)象上獲取任務(wù)的返回值,并輸出到控制臺(tái) System.out.println(">>>" + f.get().toString()); } Date date2 = new Date(); System.out.println("----程序結(jié)束運(yùn)行----,程序運(yùn)行時(shí)間【" + (date2.getTime() - date1.getTime()) + "毫秒】"); } } class MyCallable implements Callable
關(guān)于java中有哪些實(shí)現(xiàn)多線程的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
本文標(biāo)題:java中有哪些實(shí)現(xiàn)多線程的方法
本文來(lái)源:http://www.dlmjj.cn/article/ihshdj.html