1. 程式人生 > >spark中executor執行Driver傳送的task,放入執行緒池中執行原理

spark中executor執行Driver傳送的task,放入執行緒池中執行原理

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPool {

	public static void main(String[] args) throws Exception {
		ExecutorService pool = Executors.newCachedThreadPool();
		for(int i = 1; i <= 10; i++){
			pool.execute(new Runnable() {
				public void run() {
					System.out.println("thread name: " + Thread.currentThread().getName());
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			});
		}
		Thread.sleep(10000);
		System.out.println("----------------------------------");
		
		for(int i = 1; i <= 15; i++){
			pool.execute(new Runnable() {
				public void run() {
					System.out.println("thread name: " + Thread.currentThread().getName());
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			});
		}
		
		
		pool.shutdown();
	}

}

import java.io.Serializable;
import java.util.Date;

public class Task implements Runnable, Serializable {

	private static final long serialVersionUID = 1L;

	@Override
	public void run() {
		System.out.println(new Date());
	}

}

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;


public class SerTask {

	public static void main(String[] args) throws Exception {
		Task t = new Task();
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c://tasks"));
		oos.writeObject(t);
		oos.close();
	}
}

import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class DesTask {

	public static void main(String[] args) throws Exception {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c://tasks"));
		ExecutorService pool = Executors.newFixedThreadPool(5);
		Task t = (Task) ois.readObject();
		pool.execute(t);
		ois.close();
		pool.shutdown();
	}

}
copyby: czbk.zx 

相關推薦

sparkexecutor執行Driver傳送task執行執行原理

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPool { public static void main(

Android 當打開“開發人員模式”的“不保留活動”後程序應當怎麽保持正常執行

京東 java 天才 以及 click get message 查看源 create Android 當打開“開發人員模式”中的“不保留活動”後,程序應當怎麽保持正常執行咧。。? 在這幾天,我一直在糾結這個問題。從發現,程序出現這個問題,是由於“開發人員模式”中的“不保

執行Executor、ExecuteService、Executors 的區別

Executor、ExecuteService都是介面,ExecuteService繼承於Executor,Executor:介面 介面Executor裡面只有一個execute方法: void execute(Runnable command) ExecutorServ

程序通過定義學生結構體變量存儲學生的學號、姓名和3門課的成績。函數fun的功能是:對形參b所指結構體變量的數據進行修改並在主函數輸出修改後的數據。

一次 數據 mod long 成績 nbsp data 例如 main 程序通過定義學生結構體變量,存儲學生的學號、姓名和3門課的成績。函數fun的功能是:對形參b所指結構體變量中的數據進行修改,並在主函數中輸出修改後的數據。例如,若b所指變量t中的學號、姓名和三門課的成績

vue組件的樣式屬性:scoped解決在父組件無法修改子組件樣式問題

別名 處理 -h TP red example 通過 圖片 bsp   Scoped CSS規範是Web組件產生不汙染其他組件,也不被其他組件汙染的CSS規範。   vue組件中的style標簽標有scoped屬性時表明style裏的css樣式只適用於當前組件元素,它是通過

執行執行設定超時退出監控

前言 在寫多執行緒程式時,大多數情況下會先excutor建立執行緒池,然後再建立執行緒,但是對一些讀資料庫或者其他IO操作,容易堵住執行緒,此時就需要給執行緒設定超時時間,幹掉超時的執行緒再重新拉起一個執行緒來,但是java執行緒建立並沒有預留超時引數,研究了一下網上也沒找到

java執行以程式碼的順序執行,主要是記錄一下繼承執行的內容

1.這個是自定義的執行緒池類,直接上程式碼 package org.jimmy.threadtest20181121; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecut

定製在排程執行執行的任務

Java 9併發程式設計指南 目錄 定製在排程執行緒池中執行的任務 準備工作 實現過程 工作原理 擴充套件學習 更多關注 排程執行緒池是Executor框架基本執行緒池的擴充套件,排程在一段時間後執行任務。ScheduledTh

day 34 GIL鎖執行佇列執行執行回撥函式

一 . GIL鎖   GIL鎖是python程式碼轉直譯器程式碼的一個鎖         雖然我們加鎖的原因是因為要保護安全性從而降低了效率,但是加鎖也會出現安全性的問題!         二 . 執行緒佇列   import queue   三種佇列形式

在Html寫好的HighChart遷移react Ant框架使用

失敗的方法: // 方案一: /* { typeof pvUvData.data !=='undefined' ? HighChartShow(pvUvData) : (<div id="highChart1">111</div>)}

selenium執行程式碼一直提示找不到webdrive&&執行模擬器的app時一直提示網路異常

一.使用selenium執行程式碼一直提示,找不到webdriver 解決辦法:1.將google瀏覽器的路徑加入到環境變數中 2.將webdriver放在C:\Program Files (x86)\Google\Chrome\Application,並這個路徑加入到環境變數中 3.將we

執行使用ThreadLocal方案

人工手打,翻譯自:https://moelholm.com/2017/07/24/spring-4-3-using-a-taskdecorator-to-copy-mdc-data-to-async-threads 本來想自己寫一篇關於執行緒池threadlocal的,偶然看到這篇文章覺得挺好的,便直接翻譯了

Hibernate查詢表全部資訊list集合

2種方法: Configuration cfg = new Configuration().configure(); ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(

Java執行submit()和execute之間的區別?

一: submit()方法,可以提供Future < T > 型別的返回值。 executor()方法,無返回值。 execute無返回值 public void execute(Runnable command) { if (command == null)

執行的柵欄

多執行緒中有三個類,分別是CountDownLatch,CyclicBarrier,Semaphore。代表著執行緒中的柵欄。共享鎖。 CountDownLatch 在一組執行緒中,一個執行緒等待其他執行緒。我把它理解為門栓。 檢視該類的資料結構圖如下圖一 ​ 圖一 有一個靜態的內部類,Sync繼承自A

crontab不能執行sudo:抱歉您必須擁有一個終端來執行 sudo

最近做一個可執行shell排程的需求,要求使用者輸入shell,然後後臺定時排程執行。實現大致為:儲存使用者的輸入,設定時間,crontab定時執行使用者的輸入。但這裡涉及到一個安全問題,如何確定使用者的輸入是安全的? 最初的想法是過濾危險命令,比如rm -rf /之類的。後來,索性把使用者的命令丟到一個特殊

Java執行的核心執行是如何被重複利用的

在Java開發中,經常需要建立執行緒去執行一些任務,實現起來也非常方便,但如果併發的執行緒數量很多,並且每個執行緒都是執行一個時間很短的任務就結束了,這樣頻繁建立執行緒就會大大降低系統的效率,因為頻繁建立執行緒和銷燬執行緒需要時間。此時,我們很自然會想到使用執行緒池來解決這個問題。 使用執行緒池的好處

戲(細)說Executor框架執行任務執行全過程(上)

內容綜述 基於Executor介面中將任務提交和任務執行解耦的設計,ExecutorService和其各種功能強大的實現類提供了非常簡便方式來提交任務並獲取任務執行結果,封裝了任務執行的全部過程。本文嘗試通過對j.u.c.下該部分原始碼的解析以ThreadPoolExecutor為例來追蹤任

戲(細)說Executor框架執行任務執行全過程(下)

上一篇文章中通過引入的一個例子介紹了在Executor框架下,提交一個任務的過程,這個過程就像我們老大的老大要找個老大來執行一個任務那樣簡單。並通過剖析ExecutorService的一種經典實現ThreadPoolExecutor來分析接收任務的主要邏輯,發現ThreadPoolExecu

C#控制執行執行順序

在使用執行緒池時,當用執行緒池執行多個任務時,由於執行的任務時間過長,會導制兩個任務互相執行,如果兩個任務具有一定的操作順序,可能會導制不同的操作結果,這時,就要將執行緒池按順序操作。下面先給一段程式碼,該程式碼是不按順序對執行緒池進行操作的,程式碼如下: using System; using