本文共 5381 字,大约阅读时间需要 17 分钟。
创建一个Java线程常见的有两种方式:
1.继承Thread类
两种表示方法: (1).外部类import java.util.Date;public class Test1 { public static void main(String[] args) { //启动新线程 来完成输出时间的操作 Mytime mt=new Mytime(); //启动新线程 Thread的start() mt.start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}//外部类的解决方案class Mytime extends Thread{ @Override public void run() { // 放入线程要执行的代码 这是一个非常耗时的操作 boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } }}
(2).匿名内部类
import java.util.Date;public class Test2 { /** * @param args */ public static void main(String[] args) { //匿名内部类的解决方案 Thread t=new Thread(){ @Override public void run() { boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }; t.start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}------------------------------------------------------import java.util.Date;public class Test3 { /** * @param args */ public static void main(String[] args) { //匿名内部类 方案 因为这时 子类名是没有的 直接对Thread的run方法进行了实现 new Thread(){ @Override public void run() { boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }.start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}
2.实现Runnable接口
两种表示方法 (1).外部类import java.util.Date;public class Test4 { /** * @param args */ public static void main(String[] args) { Mytime2 mt=new Mytime2(); // 创建线程用Thread类 并指定这个线程要执行的任务是mt Thread t=new Thread(mt); t.start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}//外部类 这表示一个线程可以执行的任务 class Mytime2 implements Runnable{ @Override public void run() { boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }
(2).匿名内部类
import java.util.Date;public class Test5 { /** * @param args */ public static void main(String[] args) { // 创建一个任务对象 匿名内部类 有对象的引用 Runnable r=new Runnable(){ @Override public void run() { boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }; Thread t=new Thread(r); t.start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}----------------------------------------------------------------------------import java.util.Date;public class Test6 { /** * @param args */ public static void main(String[] args) { // 创建一个任务对象 匿名内部类 new Thread(new Runnable(){ @Override public void run() { boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }).start(); for (int i = 0; i < 100; i++) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程::"+i); } }}
转载地址:http://rgdfo.baihongyu.com/