第一种继承于Thread类:
1.创建一个继承于Thread的类
2.重写类中的run()方法
3.在主线程中去创建继承于Thread类的对象
4.用该对象调用start()方法从而开启线程
代码如下:
//1.创建一个线程类
class MyFirstThread extends Thread{
//2.重写run方法
@Override
public void run() {
for(int i=0;i<100;i++){
if(i%2==0){
System.out.println(Thread.currentThread().getName()+i+"子线程******");
}
}
}
}
public class FirstThread {
public static void main(String[] args){
//创建线程对象
MyFirstThread t1=new MyFirstThread();
//调线程start函数①启动当前方法②调用当前线程的run方法
t1.start();
//在这里我们必须通过调用start来调用run方法 不能直接调用run方法 如果直接调用方法 程序还是可以运行 但是没有开启线程
//只是调用方法而已
//如果想再开启一个线程来计算偶数 不能让已经start()的线程去执行 否之会报非法线程异常
//t1.start
//需要重新创建对象
MyFirstThread t2=new MyFirstThread();
t2.start();
for(int j=0;j<100;j++){
if(j%2!=0){
System.out.println(Thread.currentThread().getName()+j+"主线程");
}
}
}
}
第二种通过runnable接口实现:
1.创建一个实现Runnable接口的类
2.重写Runnable中的抽象方法:run()
3.创建实现类的对象
4.将实现类的对象作为参数传递到Thread的构造器中,创建Thread对象
5.通过调用Thread对象中的start()方法开启线程
代码如下:
//创建一个实现runnable接口的类
class MySecondThread implements Runnable{
//重写runnable接口中的抽象方法
@Override
public void run() {
for(int i=0;i<100;i++){
if(i%2!=0){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
}
public class SecondThread {
public static void main(String[] args){
//创建一个实现类的对像
MySecondThread secondThread=new MySecondThread();
//将此对象传递到Thread构造器中,创建Thread类的对象
Thread s1=new Thread(secondThread);
s1.setName("线程一");
//通过Thread类的对象调用start()
s1.start();
Thread s2=new Thread(secondThread);
s2.setName("线程二");
s2.start();
}
}
Java线程创建有四种? 这里给出比较常用的两种 另外两种后续补上
|