java实现多线程编程
操作方法
- 01
本文详细讲述一下Java实现多线程编程的三种方法,多线程领域里实现多线程编程的总体思路就是重构run()方法以实现自己所需的功能,然后创建线程对象调用start()方法来启动线程,然后线程会自动执行run()方法的。 实现多线程编程的话,可以有三种方法 ,分别是继承java.lang.Thread类,二是实现java.lang.Runnable接口,三是可以在方法内部用匿名内部类来直接创建并启动新的线程。 第一种方法,继承java.lang.Thread类。 package com.cchongda.threadtest; public class ThreadTest extends Thread{ public int i =10; public void run(){ System.out.println("当前线程是:"+Thread.currentThread()); System.out.println("现在i的值为:"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } i = 15; System.out.println("修改后的i值为:"+i+Thread.currentThread()); } public static void main(String[] args) { ThreadTest tt1 = new ThreadTest(); ThreadTest tt2 = new ThreadTest(); tt1.start(); tt2.start(); } } 这样就能实现创建了两个线程 并启动这两个线程去执行run()方法了,。 第二种方法 通过实现Runnable接口,实现Runnable接口中的run()方法,但在创建多线程对象时有区别于通过继承Thread类来实现方式。具体看main()方法中创建并启动多线程的方式。 package com.cchongda.threadtest; public class ThreadTest extends Thread{ public int i =10; public void run(){ System.out.println("当前线程是:"+Thread.currentThread()); System.out.println("现在i的值为:"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } i = 15; System.out.println("修改后的i值为:"+i+Thread.currentThread()); } public static void main(String[] args) { ThreadTest tt1 = new ThreadTest(); ThreadTest tt2 = new ThreadTest(); Thread th1 = new Thread(tt1); //创建线程对象的方式有区别于第一种方法。 Thread th2 = new Thread(t2); //Thread构造器的参数是指run方法别调用的对象。 th1.start(); th2.start(); // tt1.start(); //之所以不能直接启动是因为本类是通过实现Runnable接口的,Runnable接口中就只有一个run方法,没有start()方法,必须先分配新的Thread对象之后才能调用start()方法。 //tt2.start(); } } 第三种方法 利用匿名内部类来直接创建并启动多线程。 package com.cchongda.threadtest; public class ThreadTest{ public static void main(String[] args) throws Exception{ System.out.println("sdfasdsdfsdfsdf"); new Thread(){//用匿名内部类 来实现创建新的线程 public void run(){ int i = 10; System.out.println("当前线程是:"+Thread.currentThread()); System.out.println("现在i的值为:"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } i = 15; System.out.println("修改后的i值为:"+i+Thread.currentThread()); } }.start(); System.out.println("wwwwwwwwwwwwwwwwwwwwwwwwwww"); } } 输出结果为: sdfasdsdfsdfsdfwwwwwwwwwwwwwwwwwwwwwwwwwww当前线程是:Thread[Thread-0,5,main]现在i的值为:10修改后的i值为:15Thread[Thread-0,5,main] 可以看到主线程先执行了main()方法在方法里边又创建了一个新的线程,然后新线程又执行了run()方法。 到此 实现Java多线程编程的三种方法整理完毕。