关于线程的知识点 :
1,并发和并行的区别:
并行是指两个线程或者事物在同一时刻同时运行。并发 是指两个线程或者事物在相同的时间段内运行。CPU执行线程的时候是并发运行的。
2,线程的创建 :
线程的创建有两种方法,第一是继承Thread类 然后就可以使用Thread类中的方法
第二种是 实现Runnable 接口,例如:用MyThread类实现Runnable接口,然后重写run方法,然后创
建线程类 Thread t = new Thread(new MyThread()); 然后调用t.start() 运行该线程。
推荐使用第二种方法,应为java中是单继承,如果使用第一个方法创建线程就不能在继承其他的类了。
3,线程的分类:
线程分为 守护线程 和 用户线程 。 守护线程是为其他线程提供服务的线程,例如java中垃圾
回收的线程。 用户线程就是自己创建的线程。
4,线程的状态:new ,Runnable ,blocked,waiting,Time_waiting, Terminated
新建 可运行 阻塞 等待 超时等待 终止
详细过程,见图片
5,Thread类中的一些方法:去看API文档
6,线程的sleep
比如两个线程和一个主线程,当A线程sleep之后,这时CPU就会去执行 另一个B线程和
主线程中的一个,
5,线程的加入: Thread类中的join方法
6,线程的优先级设置 :java线程的优先级分为 1-10,默认级别为5, 可以用Thread类中的
setPriority方法设置线程的优先级
7,synchronized 关键字,线程锁
通过在方法前使用synchronized关键字可以对方法加锁,或者使用synchronized
(this)+ 代码段,对代码段加锁。
区别synchronized(obj) 和synchronized(this)的区别,在使用synchronized的时候要注意加锁的对象。
8,线程的同步
线程的同步很重要,具体看马士兵教程。
9,wait 和notify
wait 是让当前调用run方法的线程wait。 wait方法和notify方法是在一起使用,而且必须是在有synchronized关键
字的代码段或者方法中使用, 在使用wait方法之后 加锁的方法或者程序段暂时放弃加锁。
10,死锁
线程的难点和重点是线程同步,线程同步必须结合代码进行理解。