1. 程式人生 > >java多執行緒的3種寫法

java多執行緒的3種寫法

1.Thread

/**
 * 
 */
package testJava2.thread;

/**
 * @author xxx.sjtu
 * @function
 * @date 2017年5月17日
 * @version
 */
public class FirstThreadTest extends Thread {
    int i = 0;

    public FirstThreadTest(int i) {
        super();
        this.i = i;
    }

    public FirstThreadTest() {
        super
(); // TODO Auto-generated constructor stub } public FirstThreadTest(Runnable target, String name) { super(target, name); // TODO Auto-generated constructor stub } public FirstThreadTest(Runnable target) { super(target); // TODO Auto-generated constructor stub
} public FirstThreadTest(String name) { super(name); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, Runnable target, String name, long stackSize) { super(group, target, name, stackSize); // TODO Auto-generated constructor stub
} public FirstThreadTest(ThreadGroup group, Runnable target, String name) { super(group, target, name); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, Runnable target) { super(group, target); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, String name) { super(group, name); // TODO Auto-generated constructor stub } // 重寫run方法,run方法的方法體就是現場執行體 public void run() { //當前執行緒: this System.out.println(this.getName() + " " + i); } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); new FirstThreadTest(888).start(); } }

2.Runnable

/**
 * 
 */
package testJava2.thread;

/**
 * @author xxx.sjtu
 * @function
 * @date 2017年5月17日
 * @version
 */
public class RunnableThreadTest implements Runnable {

    private int i;

    public RunnableThreadTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    public RunnableThreadTest(int i) {
        super();
        this.i = i;
    }

    @Override
    public void run() {
        //當前執行緒: Thread.currentThread()
        System.out.println(Thread.currentThread().getName() + " " + i);
    }

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
        RunnableThreadTest rtt = new RunnableThreadTest(999);
        new Thread(rtt, "新執行緒1").start();
    }
}

3.Callable

/**
 * 
 */
package testJava2.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author xxx.sjtu
 * @function
 * @date 2017年5月17日
 * @version
 */
public class CallableThreadTest implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        int i = 2017;
        System.out.println(Thread.currentThread().getName() + " " + i);
        return i;
    }

    public static void main(String[] args) {
        CallableThreadTest ctt = new CallableThreadTest();
        FutureTask<Integer> ft = new FutureTask<>(ctt);
        new Thread(ft, "有返回值的執行緒").start();
        try {
            System.out.println("子執行緒的返回值:" + ft.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

    }

}

相關推薦

Java執行3實現方法

Java中的多執行緒有三種實現方式:1.繼承Thread類,重寫run方法。Thread本質上也是一個實現了Runnable的例項,他代表一個執行緒的例項,並且啟動執行緒的唯一方法就是通過Thread類的start方法。2.實現Runnable介面,並實現該介面的run()

跟著例項學習java執行3-synchronized的多種寫法有何區別?

同步程式碼塊是一種有效實現操作原子性的方法,上一章我們講了一些同步的原子操作的基礎。 現在我們回憶一下上一章的兩個問題。 1:不同的synchronized的寫法有什麼區別,又該怎麼寫建立執行緒的程式碼呢? 以class例項物件作為鎖的寫法 寫法1 package com.

java執行3:關鍵字synchronized取得的鎖都是物件鎖,而不是把一段程式碼或者方法(函式)當作鎖

java多執行緒3:關鍵字synchronized取得的鎖都是物件鎖,而不是把一段程式碼或者方法(函式)當作鎖 a.當多個執行緒訪問同一個物件的時候,哪個執行緒先執行帶synchronized關鍵字的方法,哪個執行緒就該方法所屬物件的鎖Lock,那麼其他物件就智慧呈等待狀態。但是如果多個執行緒訪

java執行3 thread中的靜態方法

轉自:http://www.cnblogs.com/xrq730/p/4851344.html     Thread類中的靜態方法 Thread類中的靜態方法表示操作的執行緒是"正在執行靜態方法所在的程式碼塊的執行緒"。為什麼Thread類中要有靜態方法,這樣就能

Java執行—兩賣票

public class MyThread1 extends Thread{ private int ticket=10; public void run() { for(int i=0;i

java執行3:原子性,可見性,有序性

概念   在瞭解執行緒安全問題之前,必須先知道為什麼需要併發,併發給我們帶來什麼問題。        為什麼需要併發,多執行緒? 時代的召喚,為了更充分的利用多核CPU的計算能力,多個執行緒程式可通過提高處理器的資源利用率來提升程式效能。 方便業務

java執行3寫法

1.Thread /** * */ package testJava2.thread; /** * @author xxx.sjtu * @function * @date 2017年5月17日 * @version */ public class FirstThreadTest exte

實現java執行3方式,99%人沒用過第3

實現多執行緒的3種方式 1、繼承Thread類 看jdk原始碼可以發現,Thread類其實是實現了Runnable介面的一個例項,繼承Thread類後需要重寫run方法並通過start方法啟動執行緒。 繼承Thread類耦合性太強了,因為java只能單繼承,所以不利

JAVA執行實現的3方式

JAVA多執行緒實現方式主要有三種:繼承Thread類、實現Runnable介面、使用ExecutorService、Callable、Future實現有返回結果的多執行緒。其中前兩種方式執行緒執行完後都沒有返回值,只有最後一種是帶返回值的。 1、繼承Thread類實

java 執行的一實現方式

private ThreadPoolExecutor threadPoolExecutor; /** * 獲取執行緒池 * @return */ private ThreadPoolExecutor getThreadPoolExecutor(){

java執行、FutureTask的用法及兩常用的使用場景

Java多執行緒實現的方式有四種 1.繼承Thread類,重寫run方法 2.實現Runnable介面,重寫run方法,實現Runnable介面的實現類的例項物件作為Thread建構函式的target 3.通過Callable和FutureTask建立執行緒 4.通過執行緒池

java:執行(匿名內部類實現執行的兩方式)

public class Demo4_Thread { public static void main(String[] args) { new Thread() {//1.繼承Thread類 public void run() {//2.重寫run方法 for(int i

java:執行(實現Runnable的原理)及二方式的區別

* 1,看Thread類的建構函式,傳遞了Runnable介面的引用  * 2,通過init()方法找到傳遞的target給成員變數的target賦值 * 3,檢視run方法,發現run方法中有判斷,如果target不為null就會呼叫Runnable介面子類物件的run方法 *

Java——實現Java執行的三方法

Java虛擬機器允許應用程式併發地執行多個執行緒。在Java語言中,多執行緒的實現一般有以下3種方法,其中前兩種是最常用的方法。 1.繼承Thread類,重寫run()方法 Thread本質上也是實現了Runnable介面的一個例項,它代表一個執行緒的例項。並且,啟動執行緒的唯一方法就是通過

java執行3 執行狀態

執行緒從建立到結束執行,經過多個狀態,每個狀態對應著不同的操作,具體如下: 1 建立(new),2 可以執行(runnable)、3 執行(running)、4 等待(waiting)、5 阻塞(blocked)、6 結束(dead) 建立執行緒 當通過new Thre

java執行(二):建立執行的三方式以及優缺點總結

一、Java中建立執行緒主要有三種方式: 1、繼承Thread類建立執行緒類 步驟: (1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。 (2)建立Thread子類的例項,即建立了執行緒物件。

java執行(一):執行的五基本狀態以及生命週期

1、Java執行緒具有五中基本狀態: 新建狀態(New):當執行緒物件對建立後,即進入了新建狀態,如:Thread thread1 = new MyThread(); 就緒狀態(Runnable):當呼叫執行緒物件的start()方法[ 如:thread1 .start(); ],執行緒

Java執行程式設計實戰》——第3章 Immutable Object(不可變物件)模式

通過使用對外可見的狀態不可變的物件,無需額外的同步訪問控制。既保證了資料一致性,又避免了同步訪問控制所產生的額外開銷和問題,也簡化了程式設計。 狀態不可變的物件:物件一經建立,其對外可見的狀態就保持不變,如String和Integer。 Immutable Object模式:將現實世界中狀態

Java併發程式設計(二)執行實現方式

Java實現多執行緒的方式 Java實現多執行緒的方式有4種: 繼承Thread方法、實現Runnable介面、實現Callable介面並通過FutureTask建立執行緒、使用ExecutorService。 其中,前兩種執行緒執行結果沒有返回值,後兩種是有返回值的。 1、繼承Th

Java執行2.4.生產者與消費者之間的關係3

生產者與消費者之間的關係 1、執行緒間通訊舉例的問題解決2 (1)建立學生類 package cn.itcast_05; public class Student { String name; int age; boolean flag; // 預設情況是沒有