多线程相关

it2022-05-07  54

多线程相关:1.线程跟进程的区别?线程是进程的执行单元。线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。详解:http://blog.csdn.net/mxsgoden/article/details/8821936

2.并发和并行并行是指同一时刻,有多条指令在多个处理器上同时执行并发是指同一时刻只能由一条指令执行,但过个进程指令被轮换执行,宏观上具有多个进程同时执行的效果

3.线程的创建和启动--创建分两种方式:继承Thread类和实现Runnable接口//继承Thread类来实现多线程public class TestThread extends Thread{ private int i; public void run(){ for(int i = 0;i < 100; i ++){ System.out.println(getName()+" " + i); } } public static void main(String[] args){ for(int i = 0;i < 100; i ++){ System.out.println(Thread.currentThread.getName()+" " + i); if(i == 20){ new TestThread().start(); new TestThread().start(); } } }}//实现Runnable接口来实现多线程public class TestRunnable implements Runnable{ private int i; public void run(){ for(int i = 0; i < 100; i ++){ System.out.println(Thread.currentThread().getName()+" " + i); } } public static void main(String[] args){ for(int i = 0;i < 100;i ++){ System.out.println(Thread.currentThread().getName()+" " + i); if(i == 20){ TestRunnable rt = new TestRunnable(); new Thread(rt,"new Thread1").start(); new Thread(rt,"new Thread2").start();

} } }}

启动线程使用start() 而不是run()

4.线程的生命周期:new(新建) -> Runnable(就绪) -> Running(运行) ->Blocket(阻塞) -> Dead(死亡)

5.join()方法--一个线程等待另一个线程执行完毕,再继续执行。eg:A线程调用了B线程的join()方法,A就需要等待B线程执行完毕以后才能继续执行。

6.后台线程--Daemon:所有线程都死亡,后台线程也会自动死亡setDaemon() 设置一个线程为后台线程,必须在start()之前调用isDaemon()

7.线程睡眠--sleep()

8.线程让步 yield() 让给同一优先级或比当前优先级高的线程,可以用设置优先级来做比较

9.线程同步 synchronized 同步锁 lock

转载于:https://www.cnblogs.com/zj-phper/p/7645942.html


最新回复(0)