java中线程的理解

一提到线程,我想大家或多或少的就会想到进程,我先解释下什么是进程以及线程和进程之间的关系吧?

所谓进程就是应用程序,比如说电脑上的qq,音乐,微信,这些应用程序只要开启了,就是一个个的进程 ,你在电脑上可以看到的。。

接下来说一下 进程和线程之间的关系,进程和线程的关系大家可以这样理解,进程可以理解为一根大的电缆线,而线程你可以理解为是电缆线里面的铜丝。。。进程之间是相互独立的,进程是线程的一部分,进程可以有多条线程。

在一个进程(即应用程序)中有多条线程,这就引发了多线程问题。也就是我们要讨论的问题。。

首先大家对并行和并发两个概念先看一下意思:synchronized 方法和 synchronized 块

并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,

并行是指两个或者多个事件在同一时刻发生;

并发是指两个或多个事件在同一时间间隔内发生。

线程之间通信无非就是几个关键字的理解,然后运用到我们的项目中去。。

1>synchronized关键字

synchronized是为了解决线程安全问题而出现的,要说这个关键字,大家先了解一下什么是锁?

锁的话大家可以理解为是负责关对象的锁,比如说探视犯人,只有把锁给打开了,才能进来探视,锁不开,不能进来的,就是不能访问对象,每一个对象都只有一把锁。这个关键字主要用于:synchronized 方法和 synchronized 块

接下来说一下这个关键字能起到什么作用,使用这个关键字是为了解决多个线程访问同一个对象时引发的线程安全问题,比较典型的就是火车票问题,我也就这个例子说下我的理解;

火车站车票就是要共享的资源,每一个火车票口就是每一个线程,当一个票口卖票(线程访问火车站车票)的时候,不能票口出售了两份一模一样的票吧,这会激起民怨的。。

这么说吧  就是不加synchronized关键字的话,会引发票口出售了一模一样的票,而加上synchronized关键字的话就不会出现这个问题了,线程抢占cpu资源时候,就是火车票的时候,这个关键字能使这个资源只能被一个线程访问,这个线程访问完毕了才能被另一个线程访问。待续。。。。




猜你喜欢

转载自blog.csdn.net/qq_29729601/article/details/69802379