java怎么实现线程 如何终止java线程

java\u600e\u4e48\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b

Java\u7ebf\u7a0b\u7c7b\u4e5f\u662f\u4e00\u4e2aobject\u7c7b,\u5b83\u7684\u5b9e\u4f8b\u90fd\u7ee7\u627f\u81eajava.lang.Thread\u6216\u5176\u5b50\u7c7b
\u521b\u5efa\u7ebf\u7a0b
Tread thread = new Thread();\u8fd0\u884c\u7ebf\u7a0b
thread.start();\u8fd0\u7528\u573a\u666f\u521b\u5efaThread\u7684\u5b50\u7c7b
public class MyThread extends Thread { public void run(){ System.out.println("MyThread running"); }}MyThread myThread = new MyThread();myTread.start();\u5b9e\u73b0Runnable\u63a5\u53e3
public class MyRunnable implements Runnable { public void run(){ System.out.println("MyRunnable running"); }}Thread thread = new Thread(new MyRunnable());thread.start();

\u6bd4\u8f83\u5b89\u5168\u7684\u6cd5\u662f\u8bbe\u7f6e\u7ec8\u6b62\u6761\u4ef6\uff0c\u8ba9\u7ebf\u7a0b\u81ea\u884c\u7ec8\u6b62\uff1abooleanb=true;publicvoidrun(){while(b){..if()b=false;//\u5f53\u8fbe\u5230\u67d0\u4e9b\u6761\u4ef6\u65f6\uff0c\u4e2d\u6b62\uff0c\u8fd9\u4e2a\u5224\u65ad\u4e5f\u53ef\u4ee5\u653e\u5728\u522b\u7684\u7ebf\u7a0b\u91cc}}

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口。

ExecutorService、Callable、Future三个接口实际上都是属于Executor框架。返回结果的线程是在JDK1.5中引入的新特征,有了这种特征就不需要再为了得到返回值而大费周折了。而且自己实现了也可能漏洞百出。

可返回值的任务必须实现Callable接口。类似的,无返回值的任务必须实现Runnable接口。

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

注意:get方法是阻塞的,即:线程无返回结果,get方法会一直等待。

再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。



您好,很高兴为您解答这个问题!
java实现线程的方式有几种

1.基本的继承Thread类
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}

MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();

2.继承runnable
public class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}

3.Callable接口通过FutureTask包装器来创建Thread线程
public interface Callable<V> {
V call() throws Exception;
}

4. 使用ExecutorService、Callable、Future实现有返回结果的线程
ExecutorService pool = Executors.newFixedThreadPool(taskSize);

当然 newCachedThreadPool() ,newSingleThreadExecutor也能使用,只是他们分别是不同情况下使用而已
其实平时用的比较多的基本是1或者2类,要设计线程池的情况下或者比较打的并发的时候用4类,需要有返回值的时候用第三类。
再者现在的java8的lambda表达式匿名多线程很好写
new Thread( () -> System.out.println("In Java8!") ).start();

是不是很简单啊!
希望采纳,谢谢

java实现线程常用到的方法有三种,供参考:

/**
 * 方法一:继承Thread类
 * 
 * @author qd
 *
 */
public class MyThread extends Thread {

    @Override
    public void run() {

        System.out.println("run方法里面编写业务代码");
    }

    public static void main(String[] args) {

        MyThread myThread = new MyThread();
        // 调用start方法启动线程
        myThread.start();

        MyThread1 myThread1 = new MyThread1();
        Thread thread = new Thread(myThread1);
        // 调用start方法启动线程
        thread.start();
    }

}

/**
 * 方法二:实现Runnable接口
 * 
 * @author qd
 *
 */
class MyThread1 implements Runnable {

    @Override
    public void run() {

        System.out.println("run方法里面编写业务代码");
    }

}

/**
 * 方法三:实现Callable<T>接口 优点:可以传参数,有返回值类型
 * 
 * @author qd
 *
 */
class MyThread2 implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        return null;
    }

}


Thread thread = new Thread();,然后实现runnable方法,可以在里面添加你想做的 事情

  • java鏈夊嚑绉瀹炵幇绾跨▼鐨勬柟寮
    绛旓細绗簩绉嶆槸瀹炵幇Runnable鎺ュ彛 瀹炵幇鏂规硶run() 涓嶅彲浠ユ姏寮傚父 鏃犺繑鍥炲 绗笁绉嶆槸瀹炵幇Callable<T>鎺ュ彛,鎺ュ彛涓瑕嗙洊鐨勬柟娉曟槸 public <T> call() 娉ㄦ剰:姝ゆ柟娉曞彲浠ユ姏寮傚父,鑰屽墠涓ょ涓嶈兘 鑰屼笖姝ゆ柟娉曞彲浠ユ湁杩斿洖鍊 绗笁绉濡備綍杩愯鍛 Callable鎺ュ彛鍦╱til.concurrent鍖呬腑,鐢绾跨▼姹犳彁浜 import java.util.concurrent...
  • 鍦Java 涓澶绾跨▼鐨瀹炵幇鏂规硶鏈夊摢浜,濡備綍浣跨敤
    绛旓細閫氳繃璋冪敤绾跨▼瀵硅薄寮曠敤鐨剆tart()鏂规硶,浣垮緱璇ョ嚎绋嬭繘鍏ュ埌灏辩华鐘舵,姝ゆ椂姝ょ嚎绋嬪苟涓嶄竴瀹氫細椹笂寰椾互鎵ц,杩欏彇鍐充簬CPU璋冨害鏃舵満銆 2.瀹炵幇Runnable鎺ュ彛,骞堕噸鍐欒鎺ュ彛鐨剅un()鏂规硶,璇un()鏂规硶鍚屾牱鏄嚎绋嬫墽琛屼綋,鍒涘缓Runnable瀹炵幇绫荤殑瀹炰緥,骞朵互姝ゅ疄渚嬩綔涓篢hread绫荤殑target鏉ュ垱寤篢hread瀵硅薄,璇hread瀵硅薄鎵嶆槸鐪熸鐨勭嚎绋嬪璞° 澶嶅埗...
  • java 瀹炵幇绾跨▼鐨勬柟娉
    绛旓細涓ょ鏂规 1.缁ф壙Thread绫 2.瀹炵幇Runnable鎺ュ彛 class MyThread extends Thread{ public void run(){ System.out.println(" extends thread");} } class MyThread2 implements Runnable{ public void run(){ System.out.println(" implements runnable");} } class Run{ public static void main( ...
  • 浠涔堟槸java澶绾跨▼璇﹁В
    绛旓細锛1锛夎繘绋嬩箣闂翠笉鑳藉叡浜暟鎹紝绾跨▼鍙互锛涳紙2锛夌郴缁熷垱寤鸿繘绋嬮渶瑕佷负璇ヨ繘绋嬮噸鏂板垎閰嶇郴缁熻祫婧愶紝鏁呭垱寤虹嚎绋嬩唬浠锋瘮杈冨皬锛涳紙3锛Java璇█鍐呯疆浜嗗绾跨▼鍔熻兘鏀寔锛岀畝鍖栦簡java澶氱嚎绋嬬紪绋嬨備竴銆佸垱寤虹嚎绋嬪拰鍚姩 锛1锛夌户鎵縏hread绫诲垱寤虹嚎绋嬬被 閫氳繃缁ф壙Thread绫诲垱寤虹嚎绋嬬被鐨勫叿浣撴楠ゅ拰鍏蜂綋浠g爜濡備笅锛• 瀹氫箟涓涓户鎵...
  • Java璇█:Java澶绾跨▼鎬庢牱鍒涘缓
    绛旓細椤绘墿灞曞叾浠栫殑绫伙紝閭d箞灏卞彲浠ヤ娇鐢瀹炵幇Runnable鎺ュ彛鐨勬柟娉曟潵瀹氫箟璇ョ被涓绾跨▼绫伙紝杩欐牱灏卞彲浠ラ伩鍏Java鍗曠户鎵挎墍甯︽潵鐨勫眬闄愭с傝繕鏈変竴鐐规渶閲嶈鐨勫氨鏄娇鐢ㄥ疄鐜癛unnable鎺ュ彛鐨勬柟寮忓垱寤虹殑绾跨▼鍙互澶勭悊鍚屼竴璧勬簮锛屼粠鑰屽疄鐜拌祫婧愮殑鍏变韩.锛1锛夐氳繃鎵╁睍Thread绫绘潵鍒涘缓澶氱嚎绋 鍋囪涓涓奖闄㈡湁涓変釜鍞エ鍙o紝鍒嗗埆鐢ㄤ簬鍚戝効绔ャ佹垚浜哄拰...
  • java澶绾跨▼鏂规硶鏈夊摢浜
    绛旓細java瀹炵幇绾跨▼甯哥敤鍒扮殑鏂规硶鏈変笁绉嶏紝渚涘弬鑰冿細/** * 鏂规硶涓锛氱户鎵縏hread绫 * * @author qd * */public class MyThread extends Thread { @Override public void run() { System.out.println("run鏂规硶閲岄潰缂栧啓涓氬姟浠g爜"); } public static void main(String[] args) { MyThrea...
  • java澶绾跨▼閮芥湁鍑犵鏂瑰紡瀹炵幇??
    绛旓細鏈変笁绉嶏細(1)缁ф壙Thread绫伙紝閲嶅啓run鍑芥暟 鍒涘缓锛歝lass xx extends Thread{ public void run(){ Thread.sleep(1000)//绾跨▼浼戠湢1000姣锛宻leep浣跨嚎绋嬭繘鍏lock鐘舵侊紝骞堕噴鏀捐祫婧 }} 寮鍚嚎绋嬶細瀵硅薄.start()//鍚姩绾跨▼锛宺un鍑芥暟杩愯 (2)瀹炵幇Runnable鎺ュ彛锛岄噸鍐檙un鍑芥暟 寮鍚嚎绋嬶細Thread t = new Thread(...
  • 濡備綍鍒涘缓骞惰繍琛Java绾跨▼
    绛旓細褰撴柊鐨绾跨▼鐨剅un鏂规硶鎵ц浠ュ悗锛岃绠楁満灏嗕細鎵撳嵃鍑哄瓧绗︿覆鈥漈hread Running鈥濄瀹炵幇Runnable鎺ュ彛 绗簩绉嶇紪鍐欑嚎绋嬫墽琛屼唬鐮佺殑鏂瑰紡鏄柊寤轰竴涓疄鐜颁簡java.lang.Runnable鎺ュ彛鐨勭被鐨勫疄渚嬶紝瀹炰緥涓殑鏂规硶鍙互琚嚎绋嬭皟鐢ㄣ備笅闈㈢粰鍑轰緥瀛愶細public class MyRunnable implements Runnable { public void run(){ System.out....
  • Java寮鍙戞湇鍔″櫒鐨绾跨▼鎬庝箞澶勭悊?
    绛旓細鍦ㄨ繘琛屾湇鍔″櫒澶勭悊鐨勮繃绋嬩腑锛岄渶瑕佷繚璇佹暟鎹殑姝g‘澶勭悊锛岄偅涔堟渶閲嶈鐨勫氨鏄娇鐢ㄤ笉鍚岀殑鏁版嵁澶勭悊妯″紡杩涜杩愮畻銆傚湪鏁翠釜杩囩▼涓紝鍙兘寰堝浜哄鏈嶅姟鍣ㄧ殑鐭ヨ瘑骞朵笉浜嗚В锛岄偅涔堝簲璇濡備綍杩涜Java寮鍙戞湇鍔″櫒鐨绾跨▼澶勭悊鍛紝鍏充簬绾跨▼澶勭悊鏈夊摢浜涚煡璇嗭紵涓嬮潰鍖椾含鍖楀ぇ闈掗笩涓哄ぇ瀹朵粙缁嶅叧閿湇鍔″櫒绾跨▼澶勭悊鐨勭畝鍗曠煡璇嗐1銆丅IO绾跨▼妯″瀷 鍦...
  • java涓鏈夊嚑绉嶆柟娉曞彲浠瀹炵幇涓涓绾跨▼?鐢ㄤ粈涔堝叧閿瓧淇グ鍚屾鏂规硶? stop...
    绛旓細瀹炵幇java.lang.Runnable鎺ュ彛 synchronized 淇グ鍚屾鏂规硶 鏂规硶鎽樿 static Thread currentThread()杩斿洖瀵瑰綋鍓嶆鍦ㄦ墽琛岀殑绾跨▼瀵硅薄鐨勫紩鐢ㄣ侰lassLoader getContextClassLoader()杩斿洖璇ョ嚎绋嬬殑涓婁笅鏂 ClassLoader銆俵ong getId()杩斿洖璇ョ嚎绋嬬殑鏍囪瘑绗︺係tring getName()杩斿洖璇ョ嚎绋嬬殑鍚嶇О銆俰nt getPriority()杩斿洖绾跨▼鐨勪紭鍏堢骇...
  • 扩展阅读:java开启新线程 ... java多线程面试题及答案 ... java创建线程 ... java线程池的七个参数 ... runnable实现多线程 ... java如何启动一个线程 ... java 流实现多线程 ... java多线程实现方法 ... 如何实现多线程 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网