1:程序员可以在程序中执行多个线程,每一个线程完成一个功能,并于其他线程并发执行,这种机制被称为多线程
2:实现线程的两种方法是,分别是继承java.lang.Thread或者实现java.lang.Runnable接口
3:Thread类是java.lang包中的一个类,从这个类实例化的对象代表线程
4:完成线程真正功能的代码是放在run()方法中的,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread 类中的strat()方法执行线程,也就是调用run()方法。
1 package com.thread; 2 /** 3 * 1:程序员可以在程序中执行多个线程,每一个线程完成一个功能,并于其他线程并发执行,这种 4 * 机制被称为多线程 5 * 2:实现线程的两种方法是,分别是继承java.lang.Thread或者实现java.lang.Runnable 6 * 接口 7 * 3:Thread泪时java.lang包中的一个类,从这个类实例化的对象代表线程 8 * 4:完成线程真正功能的代码是放在run()方法中的,当一个泪继承Thread类后,就可以 9 * 在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread 10 * 类中的strat()方法执行线程,也就是调用run()方法。 11 * @author biexiansheng 12 * 13 */ 14 public class ThreadTest extends Thread {//指定类继承Thread类 15 16 private int count=10; 17 public void run(){//重写run()方法 18 while(true){ 19 System.out.print(count+" ");//打印count变量 20 if(--count==0){//使count变量自减,当自减为0时,退出循环 21 return; 22 } 23 } 24 } 25 public static void main(String[] args) { 26 //new ThreadTest().start(); 27 Thread t=new ThreadTest();//两种方法都可以实现线程运行 28 t.start(); 29 } 30 }
示例如下
1 package com.thread; 2 /** 3 * 1:多线程实例练习 4 * @author biexiansheng 5 * 6 */ 7 public class ThreadTest1 extends Thread{ 8 9 //多线程的实现都是在run()方法中实现的 10 public void run(){ 11 System.out.println(getName()+"登上舞台"); 12 int count=0;//定义一个变量 13 while(count<=100){ 14 System.out.println(getName()+"登上"+count+"次舞台"); 15 count++; 16 if(count%10==0){ 17 try { 18 Thread.sleep(2000);//捕获异常,休眠2秒 19 } catch (InterruptedException e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 }// 23 } 24 } 25 System.out.println(getName()+"走下舞台"); 26 } 27 public static void main(String[] args) { 28 // TODO Auto-generated method stub 29 Thread t=new ThreadTest1(); 30 t.setName("Mr.Thread"); 31 t.start(); 32 //new ThreadTest1().start(); 33 34 //实现Runnable接口 35 Thread t1=new Thread(new RunnableTest(),"Ms.Runnable"); 36 t1.start(); 37 } 38 } 39 40 class RunnableTest implements Runnable{ 41 //写完上一句,类名报错,说明实现一个接口,就要实现这个接口内的方法 42 @Override 43 public void run() { 44 // TODO Auto-generated method stub 45 System.out.println(Thread.currentThread().getName()+"走上了舞台"); 46 //Runnable接口实现getName必须通过线程的currentThread()方法得到 47 int count=0;//定义一个变量 48 while(count<=100){ 49 System.out.println(Thread.currentThread().getName()+"登上"+count+"次舞台"); 50 count++; 51 if(count%10==0){ 52 try { 53 Thread.sleep(2000);//捕获异常,休眠2秒 54 } catch (InterruptedException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 }// 58 } 59 } 60 System.out.println(Thread.currentThread().getName()+"走下舞台"); 61 62 } 63 64 }