一、線程簡介:
實現的兩種方式為:
1、Thread類
2、Runnable接口
都在java.lang中
都有共通的方法:public void run()
二、線程常用方法
線程啟動:start()
線程睡眠:sleep()
線程搶佔:join()
線程讓步:yield()
三、線程實例
實例一:Thread類實現
class Xc extends Thread //創建線程所需要繼承的類
{
public void run() //run方法是覆蓋的父類方法
{
for(int i=0;i<20;i++)
{
System.out.println("子函數");
}
}
}
public class L6_1
{
public static void main(String[] args)
{
Xc xc = new Xc();
//如果直接運行run方法,那麼run方法就變成了一個普通的方法,
//在這個程序表現為先輸出20個“子函數”,在輸出20個“主函數”,
//(運行線程的話,我們的預期結果是讓他交替進行)
//xc.run();
xc.start(); //誰調用的start方法,程序就去自動調用run方法,並且是作為線程調用
//start會單開啟一個線程,而不是直接調用。
for(int i=0;i<20;i++)
{
System.out.println("主函數");
}
}
}
實例二:Runnable接口實現
class Xc2 implements Runnable //不繼承類,而是改成了實現接口
{
public void run()
{
for(int i=0;i<20;i++)
{
System.out.println("子函數");
}
}
}
public class L6_2
{
public static void main(String[] args)
{
Xc2 xc2=new Xc2();
Thread a=new Thread(xc2);
a.start();
for(int i=0;i<20;i++)
{
System.out.println("主函數");
}
}
}
兩點說明:
1、直接運行.run()方法是直接調用run函數,起不到線程的作用,需要調用start()方法開啟一個新的線程去運行這個run函數,即可實現線程的功能
2、如果是用Runnable接口實現方式,主函數裡面還要用線程實例去實現接口