小伙伴们,我们下面来看一段代码的例子吧,呼呼(~ o ~)~zZ
package net.mindview.util; //第一步、实现Runnable接口 class MyThreadRunning implements Runnable { //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println(Thread.currentThread().getName()); } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning mtr1 = new MyThreadRunning(); MyThreadRunning mtr2 = new MyThreadRunning(); MyThreadRunning mtr3 = new MyThreadRunning(); //第四步、实例化一个Thread类对象并将自定义的线程类对象作为参数传入,后面一个参数为线程名 Thread thread1 = new Thread(mtr1, "Thread 1 is running"); Thread thread2 = new Thread(mtr2, "Thread 2 is running"); Thread thread3 = new Thread(mtr3, "Thread 3 is running"); thread1.setPriority(Thread.MAX_PRIORITY); thread2.setPriority(Thread.MIN_PRIORITY); thread3.setPriority(Thread.NORM_PRIORITY); //第五步、调用start方法启动线程 thread1.start(); thread2.start(); thread3.start(); } }运行结果:
package net.mindview.util; //第一步、实现Runnable接口 class MyThreadRunning implements Runnable { //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println(Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning mtr1 = new MyThreadRunning(); MyThreadRunning mtr2 = new MyThreadRunning(); MyThreadRunning mtr3 = new MyThreadRunning(); //第四步、实例化一个Thread类对象并将自定义的线程类对象作为参数传入,后面一个参数为线程名 Thread thread1 = new Thread(mtr1, "Thread 1 is running"); Thread thread2 = new Thread(mtr2, "Thread 2 is running"); Thread thread3 = new Thread(mtr3, "Thread 3 is running"); //第五步、调用start方法启动线程 thread1.start(); thread2.start(); thread3.start(); } }运行结果:
package net.mindview.util; //第一步、实现Runnable接口 class MyThreadRunning1 implements Runnable { //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println(Thread.currentThread().getName()); } } } //第一步、实现Runnable接口 class MyThreadRunning2 implements Runnable { //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println(Thread.currentThread().getName()); Thread.yield(); } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning1 mtr1 = new MyThreadRunning1(); MyThreadRunning2 mtr2 = new MyThreadRunning2(); //第四步、实例化一个Thread类对象并将自定义的线程类对象作为参数传入,后面一个参数为线程名 Thread thread1 = new Thread(mtr1, "Thread 1 is running"); Thread thread2 = new Thread(mtr2, "Thread 2 is running"); //第五步、调用start方法启动线程 thread1.start(); thread2.start(); } }运行效果: 如果不加yield的可能的运行结果:
package net.mindview.util; //第一步、继承Thread类 class MyThreadRunning extends Thread { //构造函数 public MyThreadRunning() { super("My Thread"); } //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println("新建一个线程" + getName()+i); try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning mtr = new MyThreadRunning(); //第四步、调用start方法从而启动run方法 mtr.start(); try { mtr.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("mtr你执行完了是吧?我是主线程,我要来打印了。"); } }运行结果:
package net.mindview.util; //第一步、继承Thread类 public class MyThread { public static void main(String[] args) { Thread t1 = new MyCommon(); Thread t2 = new Thread(new MyDaemon()); t2.setDaemon(true); //设置为守护线程 t2.start(); t1.start(); } } class MyCommon extends Thread { public void run() { for (int i = 0; i < 5; i++) { System.out.println("线程1第" + i + "次执行!"); try { Thread.sleep(7); } catch (InterruptedException e) { e.printStackTrace(); } } } } class MyDaemon implements Runnable { public void run() { for (long i = 0; i < 9999999L; i++) { System.out.println("后台线程第" + i + "次执行!"); try { Thread.sleep(7); } catch (InterruptedException e) { e.printStackTrace(); } } } }运行结果:
原文地址:http://blog.csdn.net/xiaxia__/article/details/44916783