第一种方式,定义Thread类的子类:
//第一种方法 public class MyThread extends Thread { @Override public void run() { String name = getName(); // 获取线程名称 System.out.println(name); // 输出 Thread-0 } }
//第二种方法 public class MyThread extends Thread { @Override public void run() { Thread t = Thread.currentThread(); // 获取当前线程 System.out.println(t); // 下面调用后输出 Thread[Thread-0,5,main] System.out.println(t.getName());// 输出 Thread-0 } }
java相关视频推荐:java在线学习
开启多线程:
public class demo1Test { public static void main(String[] args) { MyThread mt = new MyThread(); mt.start();// 会运行MyThread的run()方法 } }
第二种方式,实现Runnable接口:
实现步骤:
1.创建一个Runnable 接口的实现类
2.在实现类中重写Runnable接口的run方法,设置线程任务
3.创建一个Runnable接口的实现类对象
4.创建Thread类对象,构造方法中传递Runnable接口的实现类对象
5.调用Thread类中的start方法,开启新的线程执行run方法
public class Runnableimpl implements Runnable {//1.创建一个Runnable 接口的实现类 @Override public void run() { for (int i = 1; i <= 20; i++) {// 2.在实现类中重写Runnable接口的run方法,设置线程任务 System.out.println(Thread.currentThread().getName() + i); } } }
public class demo2Test { public static void main(String[] args) { Runnable run = new Runnableimpl();//3.创建一个Runnable接口的实现类对象 Thread t = new Thread(run); //4.创建Thread类对象,构造方法中传递Runnable接口的实现类对象 t.start();//5.调用Thread类中的start方法,开启新的线程执行run方法 for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + i); } // Thread-0和main开始多线程抢夺cpu } }
实现Runnable接口创建多线程的好处:
1.避免了单继承的局限性:
一个类只能继承一个类,类继承了Thread后就不能继承其他的类
实现了Runnable接口,还可以继承其他的类,实现其他接口。
2.增强了程序的扩展性,降低了程序的耦合性
实现Runnable接口的方式,把设置线程任务和开启线程任务进行分离
实现类中,重写run()方法,用来设置线程任务。
创建Thread类对象,调用start()方法,用来开启新线程
sleep( )方法,使方法睡眠
public class sleepTest { public static void main(String[] args) { for (int i = 0; i < 20; i++) { //使用Thread类的sleep方法,让方法睡眠1秒钟 try { Thread.sleep(1000);//传入的是毫秒值 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i); } } }
java相关文章教程推荐:java快速入门
以上是java中多线程的实现的详细内容。更多信息请关注PHP中文网其他相关文章!