1. 程式人生 > >常用執行緒池程式碼

常用執行緒池程式碼

執行緒池的介紹
1 常用的 池化技術
C3P0
DBCP
2 執行緒池的衍生
頻繁的建立執行緒物件和多執行緒之間進行上下文切換,是非常耗時間和資源的所以JDK1.5中提出了執行緒池技術
3 使用執行緒池
Exector
4 執行緒池的建立
1 建立一個固定大小的執行緒池 ( 最常用的方法 )

ExecutorService pool = Executors.newFixedThreadPool(2);
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);//執行緒池的帶下只有兩個 現在這個任務在其等待佇列中排隊等候

	2  建立可變大小的執行緒池

    
  • 1

ExecutorService pool = Executors.newCachedThreadPool();
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);

	3 建立獨立任務的執行緒池

    
  • 1

ExecutorService pool = Executors.newSingleThreadExecutor();
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);

	4 建立可排程的執行緒池

    
  • 1

ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(2);
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
threadPool.schedule(task, 2000, TimeUnit.MILLISECONDS);

執行緒池的介紹
1 常用的 池化技術
C3P0
DBCP
2 執行緒池的衍生
頻繁的建立執行緒物件和多執行緒之間進行上下文切換,是非常耗時間和資源的所以JDK1.5中提出了執行緒池技術
3 使用執行緒池
Exector
4 執行緒池的建立
1 建立一個固定大小的執行緒池 ( 最常用的方法 )

ExecutorService pool = Executors.newFixedThreadPool(2);
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);//執行緒池的帶下只有兩個 現在這個任務在其等待佇列中排隊等候

	2  建立可變大小的執行緒池

  
  • 1

ExecutorService pool = Executors.newCachedThreadPool();
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);

	3 建立獨立任務的執行緒池

  
  • 1

ExecutorService pool = Executors.newSingleThreadExecutor();
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
pool.execute(task);
pool.execute(task);
pool.execute(task);

	4 建立可排程的執行緒池

  
  • 1

ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(2);
Runnable task = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
};
threadPool.schedule(task, 2000, TimeUnit.MILLISECONDS);