Этот пример разделяет три способа реализации многопоточного в Java для вашей ссылки. Конкретный контент заключается в следующем
Импорт java.util.concurrent.callable; import java.util.concurrent.futureTask; открытый класс Main {public static void main (string [] args) {// Метод 1: наследство int i = 0; // for (; i <100; i ++) {// system.out.println (thread.currentth i); // if (i == 5) {// threadextendsThread threadextendsThread = new ThreadExtendSThread (); // ThreadExtendStread.Start (); //} //} // Метод 2: реализация runnable // for (i = 0; i <100; i ++ {// system.out.println (stust.current. i); // if (i == 5) {// runnable runnable = new ThinkImplomeMplionsRunnable (); // new Thread (runnable) .start (); //} //} // Метод 3: реализовать Callable Interface Callable <Integer> callable = new ThinkImplomeScallable (); FutureTask <Integer> futureTask = new FutureTask <> (Callible); for (i = 0; i <100; i ++) {System.out.println (thread.currentThread (). getName () + "" + i); if (i == 5) {new Thread (futureTask) .start (); новая ветка (FutureTask) .start (); }} try {System.out.println ("FutureTask Ruturn:" + futureTask.get ()); } catch (Exception e) {e.printstackTrace (); }}} Метод 1, наследуя от потока
публичный класс ThreadExtendSthread Extends Thread {private int i; @Override public void run () {for (; i <100; i ++) {System.out.println (getName () + "" + i); }}}Метод выполнения - это тело выполнения потока, а объект ThreadExtendEndsThread - это объект потока.
Метод 2: Реализация запускаемого интерфейса
Общедоступный класс ThinkImplomemplomeSrunable реализует {private int i; @Override public void run () {for (; i <100; i ++) {System.out.println (thread.currentThread (). GetName () + "" + i); }}}Метод запуска - это тело выполнения потока. При его использовании объект потока является новым, и запускаемый объект передается в объект потока в качестве цели. И один и тот же запускаемый объект может использоваться в качестве цели для нескольких потоков, и эти потоки совместно используют переменные экземпляра для выполняемого объекта.
Метод 3: Реализуйте разбираемый интерфейс
import java.util.concurrent.callable; public class ThinkImplementsBallable реализует Callable <Integer> {private int i; @Override public integer call () бросает исключение {for (; i <100; i ++) {System.out.println (thread.currentThread (). GetName () + "" + i); } return i; }}Каллируемый интерфейс аналогичен запускающемуся интерфейсу, но он сильнее другой стороны. Тело выполнения потока - это метод вызова, который имеет возвратное значение и может бросить исключения. При использовании оберните объект Callable в качестве объекта FutureTask, укажите тип возвращаемого значения через Generics. Вы можете вызвать метод Get FutureTask, чтобы получить результат выполнения.
Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.