Thread创建线程

编程入门 行业动态 更新时间:2024-10-27 20:27:23

Thread创建<a href=https://www.elefans.com/category/jswz/34/1771240.html style=线程"/>

Thread创建线程

创建线程

1.继承Thread类创建线程

public class MyThread extends Thread{public void run(){System.out.println("这里运行线程代码");}public static void main(String[] args) {MyThread myThread = new MyThread();myThread.start();}
}

2.实现Runnable接口创建线程

public class MyThread implements Runnable {public void run(){System.out.println(Thread.currentThread().getName()+" 这里是线程运行的代码");}public static void main(String[] args) {Thread t1 = new Thread(new MyThread());t1.start();Thread t2 = new Thread(new MyThread());t2.start();}
}


3.匿名Thread创建线程

public class MyThread {Thread t1 = new Thread(){public void run(){System.out.println("通过匿名Thread创建线程代码实现");}};public static void main(String[] args) {MyThread myThread = new MyThread();myThread.t1.start();}}


4.通过匿名Runnable创建线程

public class MyThread {Thread t1= new Thread(new Runnable() {@Overridepublic void run() {System.out.println("通过匿名Runnable创建线程代码");}});public static void main(String[] args) {MyThread myThread = new MyThread();myThread.t1.start();}
}


5.通过lambda创建线程

public class MyThread {Thread t1 = new Thread(()->{System.out.println("使用labda创建线程代码");});public static void main(String[] args) {MyThread myThread = new MyThread();myThread.t1.start();}
}

Thread类和常见方法

1.Thread的常见构造方法
Thread()-----------------创建线程对象
Thread(Runnable target)----------------使用Runnable创建线程对象
Thread(String name)------------------创建线程对象并命名
Thread(Runnable target)----------------使用Runnable创建线程对象并命名
2.常见属性及获取方法
ID-----------------------getId()
名字---------------------getName()
状态----------------------getState()
优先级------------------------getPriority()
是否后台线程---------------isDaemon()
是否存活---------------------isAlive()
是否被中断------------------isInterrupted()

public class MyThread {Thread t1 = new Thread(()->{System.out.println("使用labda创建线程代码");});public static void main(String[] args) {MyThread myThread = new MyThread();System.out.println(myThread.t1.getId());System.out.println(myThread.t1.getName());System.out.println(myThread.t1.getState());System.out.println(myThread.t1.getPriority());System.out.println(myThread.t1.isDaemon());System.out.println(myThread.t1.isAlive());System.out.println(myThread.t1.isInterrupted());myThread.t1.start();System.out.println(myThread.t1.getId());System.out.println(myThread.t1.getName());System.out.println(myThread.t1.getState());System.out.println(myThread.t1.getPriority());System.out.println(myThread.t1.isDaemon());System.out.println(myThread.t1.isAlive());System.out.println(myThread.t1.isInterrupted());}
}

起动线程------start()

1.就是让操作系统内核真正创建一个线程来执行
2.run()和start()方法不同:调用start()才创建新线程,而执行新的执行流;run()方法只是普通的调用方法,在原来线程中运行

中断线程

1.让线程的方法执行完毕,利用boolean类型进行判断
2.使用isInterrupt方法
①在while中使用Thread.correntThread().isInterrupted方法
②在catch中添加break;

等待线程-----join()

1.确定线程的结束顺序,等待线程结束才会启动join()
2.join()---------等待线程的结束
join(long millis)------在millis毫秒级时间范围内等待线程结束
join(long millis,int nanos)----------增加精度的时间范围内等待线程结束

休眠线程----sleep()

1.如果没有调用sleep()线程处于就绪状态,随时会被调度到CPU上执行
2.如果调用了sleep()就会将对应的tesk struct 放在等待队列中,进入等待状态,等待时间结束,再放入就绪队列中,等待CPU调度
3.在等待队列中不是依赖先进先出,而是依据优先级

更多推荐

Thread创建线程

本文发布于:2023-06-13 09:41:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/679113.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线程   Thread

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!