进程和线程的区别
进程:
是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的
单位,也就是说进程是可以独立运行的一段程序(比如正在运行的某个java程序)。
线程:
他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源(一个线程只能属于一个进
程,而一个进程可以有多个线程)。
什么叫线程安全?举例说明
java中的线程安全是什么:
就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再
对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问
什么叫线程安全:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运
行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,
就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口
的执行结果存在二义性,也就是说蜜桃成人网站入口不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而
无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线
程同步,否则就可能影响线程安全。
存在竞争的线程不安全,不存在竞争的线程就是安全的
*sleep* ( work ) ;
} **catch** (InterruptedException e) {
e . printStackTrace () ;
}
}并发、同步的接口或方法
Java并发编程的类、接口和方法
1:线程池
与每次需要时都创建线程相比,线程池可以降低创建线程的开销,这也是因为线程池在线程执行结束后
进行的是回收操作,而不是真正的
销毁线程。
2:ReentrantLock
ReentrantLock提供了tryLock方法,tryLock调用的时候,如果锁被其他线程持有,那么tryLock会立即
返回,返回结果为false,如果锁没有被
其他线程持有,那么当前调用线程会持有锁,并且tryLock返回的结果是true,
lock.lock();
try {
//do something
} finally {
lock.unlock();
}
3:volatile
保证了同一个变量在多线程中的可见性,所以它