多线程的创建、volatile和synchronized的详细区别,原子性;创建线程的时候run()和start()的区别
时间: 2023-06-09 09:08:25 浏览: 89
Java多线程——Thread类中run()方法和start()方法的区别.docx
多线程的创建需要继承Thread类或实现Runnable接口并重写run()方法。volatile是一种关键字,表示变量的值可能随时都会发生变化,因此使用volatile声明的变量可以在多线程环境中通过多个线程共享。而synchronized关键字则是用来解决多线程访问共享资源时产生的同步问题,它可以使得多个线程在并发访问时,保证共享资源的同步性。
原子性是指一个操作是不可中断的整体,要么全部执行成功,要么全部执行失败,不会出现执行了部分操作的情况。在多线程环境中,若多个线程同时执行某个操作,可能会存在竞争,从而出现执行了部分操作的情况。为了解决这个问题,Java提供了Atomic包,它封装了一些能够保证原子性的操作,如incrementAndGet()、decrementAndGet()、compareAndSet()等。
创建线程时,调用start()方法会将线程纳入操作系统进行调度,然后由操作系统在适当的时候启动该线程,并自动调用该线程的run()方法;而直接调用run()方法并不会启动新线程,而是在当前线程中直接调用run()方法执行。因此,我们通常应该调用start()方法来启动线程。
阅读全文