线程与进程

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版权协议,转载请附上原文出处链接和本声明。