瞎学的几天 ----java多线程和线程池
Java多線程實現(xiàn)方式主要有三種:繼承Thread類、實現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實現(xiàn)有返回結(jié)果的多線程。其中前兩種方式線程執(zhí)行完后都沒有返回值,只有最后一種是帶返回值的。
?
1、繼承Thread類實現(xiàn)多線程
繼承Thread類的方法盡管被我列為一種多線程實現(xiàn)方式,但Thread本質(zhì)上也是實現(xiàn)了Runnable接口的一個實例,它代表一個線程的實例,并且,啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,并執(zhí)行run()方法。這種方式實現(xiàn)多線程很簡單,通過自己的類直接extend Thread,并復(fù)寫run()方法,就可以啟動新線程并執(zhí)行自己定義的run()方法。例如:
?
[java]?view plaincopy在合適的地方啟動線程如下:
[java]?view plaincopy
2、實現(xiàn)Runnable接口方式實現(xiàn)多線程
如果自己的類已經(jīng)extends另一個類,就無法直接extends Thread,此時,必須實現(xiàn)一個Runnable接口,如下:
為了啟動MyThread,需要首先實例化一個Thread,并傳入自己的MyThread實例:
[java]?view plaincopy事實上,當(dāng)傳入一個Runnable target參數(shù)給Thread后,Thread的run()方法就會調(diào)用target.run(),參考JDK源代碼:
[java]?view plaincopy?
而且Thread實現(xiàn)類也是實現(xiàn)的runnable接口
1 * 2 * @author unascribed 3 * @see Runnable 4 * @see Runtime#exit(int) 5 * @see #run() 6 * @see #stop() 7 * @since JDK1.0 8 */ 9 public 10 class Thread implements Runnable { 11 /* Make sure registerNatives is the first thing <clinit> does. */ 12 private static native void registerNatives(); 13 static { 14 registerNatives(); 15 }?
3、接下來我們再講講線程的優(yōu)先級設(shè)置以及一些常用的屬性設(shè)置
Thread thread = new Thread();
在這個類里我們可以設(shè)置線程的優(yōu)先級
1 public class Test { 2 public static void main(String[] args) { 3 Thread t1 = new MyThread1(); 4 Thread t2 = new Thread(new MyRunnable()); 5 t1.setPriority(10); 6 t2.setPriority(1); 7 8 t2.start(); 9 t1.start(); 10 } 11 }設(shè)置線程的名字和id還有超時時間等等
Java線程的優(yōu)先級從1到10級別,值越大優(yōu)先級越高
?最后附上一個號連接
http://blog.csdn.net/aboy123/article/details/38307539
轉(zhuǎn)載于:https://www.cnblogs.com/holdouts/articles/5888185.html
總結(jié)
以上是生活随笔為你收集整理的瞎学的几天 ----java多线程和线程池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery each函数 break和
- 下一篇: 解决oracle数据库连接不上的问题