A:创建线程并启动:继承Thread类
step1:创建子类,继承Thread类。 step2:重写run(),线程体。并发执行的内容,写在这个方法中。 step3:启动线程:start() /* class Cat class Person class MyException extends Exception{//异常类 } class MyThread extends Thread{//线程类 } */
package com.qf.demo02; //step1:创建子类,继承Thread类。 //step2:重写run(),线程体。并发执行的内容,写在这个方法中。 //step3:启动线程:start() //1.子类继承Thread类 class MyThreadA extends Thread{ @Override public void run() { //2.此处写要被并发执行的代码。。 for(int i =0;i<100;i++){ System.out.println("\tt1..跳舞ing。。"+i); } } } class MyThreadB extends Thread{ @Override public void run() { for(int i=0;i<100;i++){ System.out.println("t2..唱歌ing。。"+i); } } } public class Test1Thread { public static void main(String[] args) { //需求:并发实现边唱边跳。。 //创建线程的对象 MyThreadA t1 = new MyThreadA(); MyThreadB t2 = new MyThreadB(); //对象访问方法,直接执行方法中内容。不是并发的范畴 // t1.run(); // t2.run(); // for(int i = 0;i<100;i++){ // System.out.println("\t\tmain...伴舞"+i); // } //3.启动线程?表示该线程一切准备就绪,随时可以被cpu执行了。但是cpu是否来执行你,不确定。。 t1.start();//表示启动t1线程 t2.start();//表示启动t2线程 MyThreadA t3 = new MyThreadA(); t3.start();//老子想重来一次。。可否啊?java.lang.IllegalThreadStateException } }
B:实现Runnable接口,创建线程的方式二
step1:创建实现类,实现Runnable接口 step2:重写run(),线程体。并发执行的内容,写在这个方法中。 step3:启动线程: 创建实现类的对象:mt 根据实现类对象mt,创建Thread类对象t3,t4 start()启动该线程:t3,t4
对比run()和start() run(),是线程体。就是要并发执行内容。 start(),启动一个线程?就是该线程准备就绪了,随时可以被CPU执行。什么时候执行,CPU自己说了算。 一个线程,只能被start一次。
Thread类的构造方法 new Thread();//并发执行,执行run()方法。 new Thread(Runnable target);//并发执行,执行的run是Runnable接口的实现类实现run方法
package com.qf.demo02; /* step1:创建实现类,实现Runnable接口 step2:重写run(),线程体。并发执行的内容,写在这个方法中。 step3:启动线程: */ class MyThreadC implements Runnable{ @Override public void run() { for(int i=0;i<100;i++){ System.out.println("\t左手画圈。。。"+i); } } } class MyThreadD implements Runnable{ @Override public void run() { for(int i=0;i<100;i++){ System.out.println("右手画方块。。"+i); } } } public class Test2Runnable { public static void main(String[] args) { MyThreadC mt1 = new MyThreadC(); MyThreadD mt2 = new MyThreadD(); Thread t3 = new Thread(mt1);//当启动t3线程,执行mt1对应的run方法 Thread t4 = new Thread(mt2);//当启动t4线程,执行mt2对应的run方法 t3.start(); t4.start(); } }
原文:https://www.cnblogs.com/yzg-14/p/13401441.html