-
并发开发
-
实现多线程的方式
-
继承Thread类,重写run函数。
-
实现Runnable接口
-
实现Callable接口
-
-
三种方式的区别
-
实现Runnable接口可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程区处理同一资源的情况。
-
继承Thread类和实现Runnable方法启动线程都是使用start方法,然后JVM虚拟机将此线程放到就绪队列中,如果有处理机可用,则执行run方法。
-
实现Callable接口要实现call方法,并且线程执行完毕后会有返回值。其他的两种都是重写run方法,没有返回值。
-
-
线程安全
-
定义
扫描二维码关注公众号,回复: 8987342 查看本文章-
某个类的行为与其规范一致。
-
不管多个线程是怎样的执行顺序和优先级,或是wait,sleep,join等控制方式,,如果一个类在多线程访问下运转一切正常,并且访问类不需要进行额外的同步处理或者协调,那么我们就认为它是线程安全的。
-
-
如何保证线程安全
-
对变量使用volitate
-
对程序段进行加锁(synchronized,lock)
-
-
注意
-
非线程安全的集合在多线程环境下可以使用,但并不能作为多个线程共享的属性,可以作为某个线程独享的属性。
-
例如Vector是线程安全的,ArrayList不是线程安全的。如果每一个线程中new一个ArrayList,而这个ArrayList只是在这一个线程中使用,肯定没问题。
-
-
-
多线程如何进行信息交互
-
Object中的方法,wait(), notify(),notifyAll();
-
-
多线程共用一个数据变量需要注意什么?
-
当我们在线程对象(Runnable)中定义了全局变量,run方法会修改该变量时,如果有多个线程同时使用该线程对象,那么就会造成全局变量的值被同时修改,造成错误.
-
ThreadLocal是JDK引入的一种机制,它用于解决线程间共享变量,使用ThreadLocal声明的变量,即使在线程中属于全局变量,针对每个线程来讲,这个变量也是独立的。
-
volatile变量每次被线程访问时,都强迫线程从主内存中重读该变量的最新值,而当该变量发生修改变化时,也会强迫线程将最新的值刷新回主内存中。这样一来,不同的线程都能及时的看到该变量的最新值。
什么是线程池-
设计一个动态大小的线程池,如何设计,应该有哪些方法
-
一个线程池包括以下四个基本组成部分:
-
线程管理器(ThreadPool):用于创建并管理线程池,包括创建线程,销毁线程池,添加新任务;
-
工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;
-
任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;
-
任务队列(TaskQueue):用于存放没有处理的任务。提供一种缓冲机制;
-
-
所包含的方法
-
private ThreadPool() 创建线程池
-
public static ThreadPool getThreadPool() 获得一个默认线程个数的线程池
-
public void execute(Runnable task) 执行任务,其实只是把任务加入任务队列,什么时候执行有线程池管理器决定
-
public void execute(Runnable[] task) 批量执行任务,其实只是把任务加入任务队列,什么时候执行有线程池管理器决定
-
public void destroy() 销毁线程池,该方法保证在所有任务都完成的情况下才销毁所有线程,否则等待任务完成才销毁
-
public int getWorkThreadNumber() 返回工作线程的个数
-
public int getFinishedTasknumber() 返回已完成任务的个数,这里的已完成是只出了任务队列的任务个数,可能该任务并没有实际执行完成
-
public void addThread() 在保证线程池中所有线程正在执行,并且要执行线程的个数大于某一值时。增加线程池中线程的个数
-
public void reduceThread() 在保证线程池中有很大一部分线程处于空闲状态,并且空闲状态的线程在小于某一值时,减少线程池中线程的个数
-
-
-
线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。
-
-
-
2.5、java的并发开发
猜你喜欢
转载自blog.csdn.net/u013636987/article/details/104144817
今日推荐
周排行