线程
线程
前提:有一个线程的执行主类
要实现一个多线程的主类:
每一个
1.继承一个Thread类:
继承Tread类并且覆写一个run方法
Example:
class MyThread extends Thread{
private String title;
public MyThread(String title){
this.title=title;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(title+" : "+i);
}
}
}
public class Test {
public static void main(String args[]) {
MyThread m1= new MyThread("Thread1");
MyThread m2= new MyThread("Thread2");
MyThread m3= new MyThread("Thread3");
m3.start();
m2.start();
m1.start();
}
}
2.(推荐)实现Runnable、Callable接口
如果现在想要实现一个多线程的主类,有两种途径:
正确启动多线程的方法,应该调用start()方法,start()方法来调用run()方法。每一个线程对象只能启动一次,不能同时启动多次。
如果想实现多线程,必须有一个前提,有一个线程的执行主类。
线程的主类 main()
多线程的主类
main 多线程的主类(启动方法)
如果想实现一个多线程的主类,有两类途径:
继承一个Thread类
实现Runnable ,Callable接口
继承Thread类实现多线程
java.lang.Thread是一个线程操作的核心类。如果想定义一个线程的主类,继承Thread类,后覆写run()方法;
定义一个线程的实体类
当线程有了主体类后,产生对象,调用run方法。多线程给进程执行时相同,应该是交替执行,应该启动主类中的start()方法;
启动多线程 public void start(),启动run
启动了start发现了线程进行了交替执行。
为什么要通过start()方法来调用run()方法
源代码在jdk的安装目录下。
首先在本程序中发现该方法会抛出一个异常'IlligalException',常用方法应该使用throws声明,或者直接在方法中进行try。。。catch。
这个线程只有多次启动的时候才抛出异常。
而后可以发现在start()方法中调用了一次start0方法,而这个方法是一个只声明而为实现,用native关键字进程修饰,调用了本系统函数。