两种方式:
(1)继承Thread类
class A extends Thread()
{
@Override
public void run()
{
}
}
A thread1=new A();
thread1.run();
(2)实现Runnable接口
较为繁琐:先让一个类A实现Runnable接口,然后new一个这个类的对象,最后将这个对象传进new Thread()里面
class A implements Runnable
{
@Override
public void run()
{
}
}
A a=new A();
Thread thread1=new Thread(a);
thread1.run();
简化版本:
Thread thread1=new Thread( ()->{} ,"线程1");
thread1.run();
方式一:搞一个类(比如叫MyThread)让它继承Thread类
class MyThread extends Thread
{
@Override
public void run()
{
System.out.println("HelloWorld!");
}
}
public class demo
{
public static void main(String[] args)
{
//创建一个线程对象
Thread test=new MyThread();
//启动新线程
test.start();
//执行start()方法的时候会自动调用run()方法
//输出得到:HelloWorld!
}
}
方式二:搞一个类(比如叫MyThread),让它实现Runnable接口
class Task implements Runnable
{
@Override
public void run()
{
System.out.println("HelloWorld!");
}
}
public class demo
{
public static void main(String[] args)
{
Task task=new Task();
Thread thread=new Thread(task);
//上面两行代码可以合并成一行代码: Thread thread=new Thread(new Task());
//启动新线程
thread.start();
}
}
第二种方式实际使用中,会这么写:
public class demo
{
public static void main(String[] args)
{
Thread thread=new Thread(new Runnable()
{
@Override
public void run()
{
System.out.println("HelloWorld!");
}
}
);
thread.start();
}
}
或者这么写:
public class demo
{
public static void main(String[] args)
{
Thread thread=new Thread(()->
{
System.out.println("HelloWorld!");
}
);
thread.start();
}
}
甚至这么写:
new Thread(()->{System.out.println(Thread.currentThread().getName()+"hello");},"AAA").start();
由于java中类必须单继承,所以如果用第一种方式创建线程,那这个类就无法再继承其他类了,因此方式二是一种更常用的创建方式
一次性创建多个线程:
Thread thread1=new Thread( ()->{System.out.println("线程1在运行");},"线程1");
thread1.run();
Thread thread2=new Thread( ()->{System.out.println("线程2在运行");},"线程2");
thread2.run();
Thread thread3=new Thread( ()->{System.out.println("线程3在运行");},"线程3");
thread3.run();