java多線程入門知識及示例程序
為什么需要多線程?
模型的簡化,如某些程序是由多個相對任務(wù)的運行:
圖形界面的出現(xiàn),輸入、輸出的阻塞
多核CPU的更好利用
異步行為的需要
Java多線程的特性:
程序的入口main本身是一個線程
線程是并發(fā)的,無序執(zhí)行的
線程內(nèi)部是順序執(zhí)行的
共享數(shù)據(jù)
Java多線程的風(fēng)險:
安全風(fēng)險:由于線程的操作順序是不確定的,某些在單線程下能運行的程序到多線程下會出現(xiàn)意外的結(jié)果。
性能風(fēng)險:服務(wù)器的吞吐量、響應(yīng)性、資源消耗
Java多線程API:
Java可以通過兩種形式創(chuàng)建線程:一、實現(xiàn)Runnable接口,二、繼承Thread類。
繼承thread創(chuàng)建線程示例代碼
public class ThreadTest extends Thread {
public static void main(String[] args) {
ThreadTest thread = new ThreadTest();
thread.start();
for (int i=0; i<10; i++) {
System.out.println("main:"+i);
}
}
@Override
public void run() {
for (int i=0; i<10; i++) {
System.out.println("thread:"+i);
}
}
}
實現(xiàn)runnable創(chuàng)建線程代碼
package com.openrdp.thread.api;
public class RunnableTest implements Runnable {
public static void main(String[] args) {
RunnableTest runnable = new RunnableTest();
Thread thread = new Thread(runnable);
thread.start();
for (int i=0; i<10; i++) {
System.out.println("main:"+i);
}
}
@Override
public void run() {
for (int i=0; i<10; i++) {
System.out.println("thread:"+i);
}
}
}
Java線程池技術(shù)
Executors獲取exceuctorservice線程池代碼
package com.openrdp.thread.api;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TreadPoolTest {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(99);
TaskThread thread1 = new TaskThread("t1");
threadPool.execute(thread1);
TaskThread thread2 = new TaskThread("t2");
threadPool.execute(thread2);
}
static class TaskThread implements Runnable {
String param;
public TaskThread(String param) {
this.param = param;
}
@Override
public void run() {
}
}
}
相關(guān)文章
在Spring Boot中集成RabbitMQ詳細(xì)步驟(最新推薦)
本文將介紹如何在Spring Boot項目中集成RabbitMQ,實現(xiàn)生產(chǎn)者和消費者的基本配置,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-12-12java批量下載將多個文件(minio中存儲)壓縮成一個zip包代碼示例
在Java應(yīng)用程序中有時我們需要從多個URL地址下載文件,并將這些文件打包成一個Zip文件進行批量處理或傳輸,這篇文章主要給大家介紹了關(guān)于java批量下載將多個文件(minio中存儲)壓縮成一個zip包的相關(guān)資料,需要的朋友可以參考下2023-11-11Java數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組(動力節(jié)點之Java學(xué)院整理)
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組(動力節(jié)點之Java學(xué)院整理)的相關(guān)資料,包括創(chuàng)建和內(nèi)存分配,數(shù)組封裝后的使用等,需要的朋友參考下吧2017-04-04java基于C/S結(jié)構(gòu)實現(xiàn)多線程聊天室
這篇文章主要為大家詳細(xì)介紹了java基于C/S結(jié)構(gòu)實現(xiàn)多線程聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01Java toString方法重寫工具之ToStringBuilder案例詳解
這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08