[Java]マルチスレッド/Theadクラスの継承/runnableインタフェースの実装
1738 ワード
ThreadクラスとThreadのサブクラスをスレッドクラスと呼ぶことができます
』』Threadクラスを継承してマルチスレッドを実現
』』マルチスレッドを実現するためのインタフェース法の実装
JAvaはマルチ継承を許さないため,Runnableインタフェースを実現したクラスは他のクラスを継承することができる.
=================スレッドプールについて
【非オリジナル転載自快楽coding快楽プレイ】
スレッドプールを作成するには、主に3つの静的メソッドが使用され、Executorsによって対応するスレッドプールを作成します.
NewFixedThreadPoolは、指定されたスレッド数を含むスレッドプールを返します.タスク数がスレッド数より多い場合、タスクが完了するまで実行されていないタスクは待たなければなりません.
NewCachedThreadPoolは、ユーザーのタスク数に応じて対応するスレッドを作成して処理します.このスレッドプールはスレッド数を制限することはなく、JVMがスレッドを作成できる数に完全に依存し、メモリ不足を引き起こす可能性があります.
NewScheduledThreadPoolは、少なくともn個のスレッド空間サイズを有するスレッドプールを作成する.このスレッド・プールは、タイミングおよび周期的なタスク実行の要件をサポートします.
Runnableを実装したクラスのオブジェクトインスタンスをスレッドプールに入れるだけで、スレッドプールはスレッドの起動、実行、破棄を自動的に維持します.このスレッドを開くにはstart()メソッドを自分で呼び出す必要はありません.スレッドがスレッドプールに格納されると、十分なスペースがあるまで待機状態になります.
』』Threadクラスを継承してマルチスレッドを実現
public class A {
public static main (String args[])
{
//
new myThread().start();// run,run
}
}
class myThread extends Thread{
@Override
public void run() {
// : }}
』』マルチスレッドを実現するためのインタフェース法の実装
JAvaはマルチ継承を許さないため,Runnableインタフェースを実現したクラスは他のクラスを継承することができる.
public class A {
public static main (String args[])
{
Thread a = new Thread(new myRunnable()); a.start();
}}
class myRunnable implements Runnable{
@Override public void run() {
// :
}
}
}
=================スレッドプールについて
【非オリジナル転載自快楽coding快楽プレイ】
スレッドプールを作成するには、主に3つの静的メソッドが使用され、Executorsによって対応するスレッドプールを作成します.
public static ExecutorSevice newSingleThreadExecutor()
public static ExecutorSevice newFixedThreadPool(int nThreads)
public static ExecutorSevice newCachedThreadPool()
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
newSingleThreadExecutorは単一スレッドを含むExecutorを返し、複数のタスクをこのExectorに渡すと、このスレッドは1つのタスクを処理した後、次のタスクを処理し、スレッドに異常が発生すると、新しいスレッドが代替されます.NewFixedThreadPoolは、指定されたスレッド数を含むスレッドプールを返します.タスク数がスレッド数より多い場合、タスクが完了するまで実行されていないタスクは待たなければなりません.
NewCachedThreadPoolは、ユーザーのタスク数に応じて対応するスレッドを作成して処理します.このスレッドプールはスレッド数を制限することはなく、JVMがスレッドを作成できる数に完全に依存し、メモリ不足を引き起こす可能性があります.
NewScheduledThreadPoolは、少なくともn個のスレッド空間サイズを有するスレッドプールを作成する.このスレッド・プールは、タイミングおよび周期的なタスク実行の要件をサポートします.
Runnableを実装したクラスのオブジェクトインスタンスをスレッドプールに入れるだけで、スレッドプールはスレッドの起動、実行、破棄を自動的に維持します.このスレッドを開くにはstart()メソッドを自分で呼び出す必要はありません.スレッドがスレッドプールに格納されると、十分なスペースがあるまで待機状態になります.