我们先来看段示例代码
นำเข้า java.util.concurrent.callable; นำเข้า java.util.concurrent.futuretask; คลาสสาธารณะหลัก {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// 方法一: 继承继承继承继承继承继承继承 int i = 0; // สำหรับ (; i <100; i); // ถ้า (i == 5) {// theadextendSthread theadextendSthread = new ThreatextendSthread (); // theadextendSthread.start (); //} //} // 方法二:: 实现实现实现实现实现实现实现实现System.out.println (thread.currentthread (). getName () + "" + i); // ถ้า (i == 5) {// runnable runnable = threadImplementsRunnable (); // ใหม่ (runnable) .start (); callable <teeger> callable = new ThreadImpleMentsCallable (); FutureTask <Integer> FutureTask = New FutureTask <> (callable); สำหรับ (i = 0; i <100; i ++) {system.out.println (thread.currentthread (). getName () + "" + i); if (i == 5) {เธรดใหม่ (futureTask) .start (); เธรดใหม่ (FutureTask). start (); }} ลอง {system.out.println ("FutureTask RuTurn:" + FutureTask.get ()); } catch (exception e) {e.printstacktrace (); -接下来我们来详细探讨下 Java 实现多线程的几种方式
方法一, 继承自เธรด
ชั้นเรียนสาธารณะ theadextendSthread ขยายเธรด {private int i; @Override โมฆะสาธารณะ Run () {สำหรับ (; i <100; i ++) {system.out.println (getName () + "" + i); -เรียกใช้方法为线程执行体, theadextendSthread 对象即为线程对象。
方法二, 实现 Runnable 接口
Public Class ThreadImplementsRunnable ใช้งานได้ Runnable {Private int i; @Override โมฆะสาธารณะ Run () {สำหรับ (; i <100; i ++) {system.out.println (thread.currentthread (). getName () + "" + i); -เรียกใช้方法为线程执行体, 使用时ใหม่一个เธรด对象, runnable 对象作为 target 传递给เธรด对象。且同一个 runnable 对象可作为多个 thread 的เป้าหมาย, 这些线程均共享 runnable 对象的实例变量。对象的实例变量。享共共共共共享共共共共
方法三, 实现 callable 接口
นำเข้า java.util.concurrent.callable; Public Class ThreadImplementsCallable ANPLEMENCE CALLABLE <teger> {Private Int i; @Override การเรียกใช้จำนวนเต็มสาธารณะ () พ่นข้อยกเว้น {สำหรับ (; i <100; i ++) {system.out.println (thread.currentthread (). getName () + "" + i); } return i; -เรียกได้接口类似于 runnable 接口, 但比对方强大, 线程执行体为โทร方法, 该方法具有返回值和可抛出异常。使用时将 callable 对象包装为 futureTask 对象, 通过泛型指定返回值类型。可稍候调用 futureTask 的รับ方法取回执行结果。