一、創建多線程的方式1--繼承Thread類
步驟:1自定義類MyThread繼承Thread類 2MyThread里面重寫run()方法 3創建對象 4啟動線程
1 package test; 2 3 public class MyThread extends Thread{ 4 @Override 5 public void run() { 6 // TODO Auto-generated method stub 7 //super.run(); 8 for(int i=0;i<100;i++){ 9 System.out.1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt=new MyThread(); 6 mt.start(); 7 MyThread mt2=new MyThread(); 8 mt2.start(); 9 10 }11 }二、線程基礎
1獲得線程名稱
1 getName()2設置線程名稱
my1.setName("線程1");3返回當前正在執行的線程的名稱
Thread.currentThread().getName();4線程優先級
1-10,默認是5
獲得優先級
my1.getPriority()設置優先級
my1.setPriority(2);三、線程控制
1線程睡眠
1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt=new MyThread(); 6 MyThread mt2=new MyThread(); 7 MyThread mt3=new MyThread(); 8 9 mt.setName("進程1");10 mt2.setName("進程2");11 mt3.setName("進程3");12 13 mt.start();14 mt2.start();15 mt3.start();16 }17 }1 package test; 2 import java.util.Date; 3 public class MyThread extends Thread{ 4 @Override 5 public void run() { 6 // TODO Auto-generated method stub 7 //super.run(); 8 for(int i=0;i<100;i++){ 9 System.out.println(getName()+": "+i +" " +new Date());10 //睡眠11 try {12 Thread.sleep(1000);13 } catch (InterruptedException e) {14 // TODO Auto-generated catch block15 e.printStackTrace();16 }17 }18 }19 }2線程加入
1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt=new MyThread(); 6 MyThread mt2=new MyThread(); 7 MyThread mt3=new MyThread(); 8 9 mt.setName("進程1");10 mt2.setName("進程2");11 mt3.setName("進程3");12 13 mt.start();14 //線程加入 該線程執行完畢,其他線程才能執行15 try {16 mt.join();17 } catch (InterruptedException e) {18 // TODO Auto-generated catch block19 e.printStackTrace();20 }21 mt2.start();22 mt3.start();23 }24 }1 package test; 2 import java.util.Date; 3 public class MyThread extends Thread{ 4 @Override 5 public void run() { 6 // TODO Auto-generated method stub 7 //super.run(); 8 for(int i=0;i<100;i++){ 9 System.out.println(getName()+": "+i +" " +new Date());10 //睡眠11 try {12 Thread.sleep(100);13 } catch (InterruptedException e) {14 // TODO Auto-generated catch block15 e.printStackTrace();16 }17 }18 }19 }3線程禮讓
1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt=new MyThread(); 6 MyThread mt2=new MyThread(); 7 MyThread mt3=new MyThread(); 8 9 mt.setName("進程1");10 mt2.setName("進程2");11 12 mt.start(); 13 mt2.start();14 15 }16 }1 package test; 2 import java.util.Date; 3 public class MyThread extends Thread{ 4 @Override 5 public void run() { 6 // TODO Auto-generated method stub 7 //super.run(); 8 for(int i=0;i<100;i++){ 9 System.out.println(getName()+": "+i +" " +new Date());10 //線程禮讓11 Thread.yield();12 }13 }14 }4守護線程 主線程掛了,守護線程都會掛掉
1 package test; 2 3 import java.util.Date; 4 5 public class MyThread extends Thread { 6 @Override 7 public void run() { 8 // TODO Auto-generated method stub 9 // super.run();10 for (int i = 0; i < 20; i++) {11 System.out.println(getName() + ": " + i + " " + new Date());12 13 }14 }15 }1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt=new MyThread(); 6 MyThread mt2=new MyThread(); 7 MyThread mt3=new MyThread(); 8 9 mt.setName("進程1");10 mt2.setName("進程2");11 12 //設置守護線程13 mt.setDaemon(true);14 mt2.setDaemon(true);15 16 mt.start(); 17 mt2.start();18 19 //改主線程的名字為“劉備”20 Thread.currentThread().setName("劉備");21 for(int x=0;x<5;x++){22 System.out.println(Thread.currentThread().getName()+": "+x);23 }24 25 }26 }5進程中斷
1 package test; 2 3 public class Test01 { 4 public static void main(String[] args) { 5 MyThread mt = new MyThread(); 6 7 mt.start(); 8 //進程中斷 9 //超過3秒不醒,則中斷10 try {11 Thread.sleep(3000);12 mt.interrupt();13 } catch (InterruptedException e) {14 // TODO Auto-generated catch block15 e.printStackTrace();16 }17 18 }19 }1 package test; 2 3 import java.util.Date; 4 5 public class MyThread extends Thread { 6 @Override 7 public void run() { 8 System.out.println("開始執行:"+new Date()); 9 try {10 Thread.sleep(10000);11 } catch (InterruptedException e) {12 // TODO Auto-generated catch block13 //e.printStackTrace();14 System.out.println("線程被終止了");15 }16 System.out.println("結束執行:"+new Date());17 }18 }
新聞熱點
疑難解答