JAVAマルチスレッド-スレッド
3033 ワード
スレッドを作成するには、マルチスレッドを理解するには、まずスレッドを作成する方法を知っておく必要があります。Threadクラスを継承し、Runnableインターフェースを実現し、Callableインターフェースを実現します。
//作成スレッド方式一:Thread類を引き継ぎ、run()方法を書き換え、startオープンスレッドpublic class TestThread 1 extends Thread{@Override public void run(){/runメソッドスレッド体for(int i=0;)を呼び出します。i<20;i+){System.out.println(「勉強しています」+i)}
//ダウンロード器class webDownloader{
相互反発条件:リソースは毎回一つのプロセスでしか使用できません。要求と保持条件:1つのプロセスは、リソースを要求することによってブロックされたとき、獲得されたリソースを保持します。条件を奪わない:プロセスが獲得した資源は、最終的に使用される前に、強制的に奪うことはできません。循環待ち条件:いくつかのプロセスの間に、一連の資源待ち関係が形成されます。
————————————————原文の作者:HuDuはリンクから回転します。https://learnku.com/articles/46533 著作権声明:著作権は著者の所有になります。商業転載は作者に連絡して授権を得てください。商業転載ではなく、以上の作者の情報と原文のリンクを保留してください。
//作成スレッド方式一:Thread類を引き継ぎ、run()方法を書き換え、startオープンスレッドpublic class TestThread 1 extends Thread{@Override public void run(){/runメソッドスレッド体for(int i=0;)を呼び出します。i<20;i+){System.out.println(「勉強しています」+i)}
public static void main(String[] args) {
//main ,
//
TestThread1 testThread1 = new TestThread1();
// start()
testThread1.start();
for (int i = 0; i < 20; i++) {
System.out.println(" "+i);
}
}
}/作成スレッド方式2:runnableインターフェースを実現し、run方法を書き換え、実行スレッドはrunnableインターフェースの実現類に入れなくてはならず、start方法public class TestThread 3 implemens Runnable{public void run(){for(int i=0;i<20;i+){System.out.println("コードを見ています")}public static void main(String[] args) {
// runnable
TestThread3 testThread3 = new TestThread3();
// , ,
Thread thread = new Thread(testThread3);
thread.start();
for (int i = 0; i < 20; i++) {
System.out.println(" ");
}
}
}3つ目はダウンロードしたjarパッケージを通してデモを行い、まずcommons-i 2 o 2.7/スレッド作成方式3を導入する。Callableインターフェースを実現する/先に依存/callableを導入する利点は、戻り値を定義することができます。例外*/public class TestCallable implements Callable{private String url;
private String name;
public TestCallable(String url, String name) {
this.url = url;
this.name = name;
}
public Boolean call() throws Exception {
webDownloader webDownloader = new webDownloader();
webDownloader.downloader(url,name);
System.out.println(" "+name);
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
TestCallable t1 = new TestCallable(" ", "1.jpg");
TestCallable t2 = new TestCallable(" ", "2.jpg");
TestCallable t3 = new TestCallable(" ", "3.jpg");
// :
ExecutorService ser = Executors.newFixedThreadPool(3);
//
Future r1 = ser.submit(t1);
Future r2 = ser.submit(t2);
Future r3 = ser.submit(t3);
//
Boolean rs1 = r1.get();
Boolean rs2 = r2.get();
Boolean rs3 = r3.get();
//
ser.shutdownNow();
}
)//ダウンロード器class webDownloader{
public void downloader(String url,String name) {
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("I0 , downloader ");
}
}
}Copyスレッドの不安全ロック条件相互反発条件:リソースは毎回一つのプロセスでしか使用できません。要求と保持条件:1つのプロセスは、リソースを要求することによってブロックされたとき、獲得されたリソースを保持します。条件を奪わない:プロセスが獲得した資源は、最終的に使用される前に、強制的に奪うことはできません。循環待ち条件:いくつかのプロセスの間に、一連の資源待ち関係が形成されます。
————————————————原文の作者:HuDuはリンクから回転します。https://learnku.com/articles/46533 著作権声明:著作権は著者の所有になります。商業転載は作者に連絡して授権を得てください。商業転載ではなく、以上の作者の情報と原文のリンクを保留してください。