import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class MyThread { public static void main(String[] args) { //第一种创建线程对象的方法 //先定义一个Thread的子类在给子类进行一个实例化对象 Thread1 thread1 = new Thread1(); // 实例化一个thread1的对象该类已经继承了Thread类 thread1.start(); // 调用程序开始的方法 start指的是main函数的开始 开始执行run方法 //第二种创建线程对象的方法(使用Thread的接口runnable进行) //new Thread(Runnable target) Thread2 thread2 = new Thread2(); // 实例化一个Runnable接口的子类的实例化对象 Thread Thread10 = new Thread(thread2); Thread10.start(); Thread3 thread3 = new Thread3(); //实例化一个thread3的对象 FutureTask task1 = new FutureTask(thread3); // 用FutureTask对thread对象进行封装 Thread thread = new Thread(task1,"刘");// 用thread对Future进行封装 thread.setDaemon(true);//把线程变成后台线程 thread.start(); //用匿名函数生成对象 new Thread(new Runnable(){ public void run(){ System.out.println("我调用了匿名函数"); } }); } } //第一种方法 class Thread1 extends Thread { //继承Thread 并实现Thread的接口并实现runnable接口 public void run() { //重写runnable的抽象方法 System.out.println(Thread.currentThread().getName());//获取当前线程的名字 } } //第二种方法 class Thread2 implements Runnable{ //重写抽象方法 public void run() { System.out.println("我被调用了"); } } //第三种方法 //与前两种的区别有返回值 class Thread3 implements Callable { public Object call()throws Exception { String name = "我是第三种方法"; System.out.println(name); return name; } //yield对进行让步 //join 线程插队 //变成后台线程 setDaemon(true) 里面是一个boolean值 当前面所有的前台线程都停止时后台的就会自动退出 //线程的优先级 //优先级越高,抢到cpu的控制权的概率越大 //MAX-PRIORITY //MIN-PRIORITY //NORM-PRIORITY //设置优先级的方法setpriority; //currentThread()为一个static方法 //final getName() //应该是final对象不能进行实例化 }
创建线程对象的三种方式
最新推荐文章于 2022-10-31 21:52:55 发布