1、线程是cpu调度的最小单位,线程不能独立于进程单独存在
2、并行:同时执行不同的任务
3、并发:交替的执行不同的任务
并发不能脱离时间单位,单位时间内的并发量是多少
4、一个进程允许开的线程数
(1)Linux中一个进程最高允许开1000个线程
(2)windows中一个进程最高允许开2000个线程
5、java里的程序天生就是多线程的,有2种新启线程的方式。
(1)类Thread
(2)接口Runnable
public static class ThreadOne extends Thread{
@Override
public void run() {
super.run();
//逻辑
}
}
//调用
ThreadOne threadOne = new ThreadOne();
threadOne.start();public static class ThreadTwo implements Runnable{
@Override
public void run() {
//逻辑
}
}
//调用
ThreadTwo threadTwo = new ThreadTwo();
new Thread(threadTwo).start();6、Thread和Runnable的区别
Thread对线程的抽象,Runnable为对任务(业务逻辑)的抽象
7、线程stop方法不建议使用
它可能使线程锁所占用的资源不能正常的释放
8、线程中断Interrupt,jdk中的线程是协作式的,不是抢占式,三个方法如下:
(1)interrupt():对线程进行中断
(2)static方法 interrupted():判断当前线程是否被中断
(3)isInterrupted()
Runnable使用可以用Thread.currentThread().isInterrupted()。
thread.run()运行的是main线程,thread.start()运行的是自己本身的线程。
9、怎么能保证两个线程顺序的执行? join()
线程的优先级为1-10,默认值是5
设置守护线程.setDaemon(true);
守护线程中finally不一定起作用,用户线程finally一定会执行。
10、线程间共享
(1)synchronized内置锁
用处和用法:同步块、方法中使用
对象锁
类锁
(2)volatile关键字,最轻量的同步机制
适用于一写多读的应用场景
版权声明:本文为baidu_24743861原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。