【Java】多线程(以实现视频功能为例)
文章目录
step1:如何实现视频
视频是由一幅幅的画实现的,因此我们做的只有两件事情:
1)找到一个可以调用摄像头的接口
2)利用这个接口获取每时每刻的画面
3)不断的循环把这些画面画出来
step2:为什么关不掉?(需要多线程的原因)
我们在实现step3的第一步打开视频之后发现,我们虽然可以实现这个功能,但是关!不!上!了!
WHY?
因为程序是顺序执行的,我们写了一个死循环…
这个死循环都没有执行完,之后再怎么往后执行呢?
于是我们陷入了沉思…因为不用循环出不了视频,但是只要在循环里面,点击都点击不了…
因为点击的程序,现在被占住了啊!!!点击从程序现在在画画呢,咋给你处理点击?
因此,我们想,这样的话,能不能实现两个程序同时在执行呢?
一个随时响应着等待着我的指令,一个工作着画出摄像头捕捉到的图像
因此便引入了线程的概念。我们的计算机基本都是多线程在执行命令啊,都是用的这个思路。这也是为什么你可以开多个网页的原因。
响应你命令的线程把参数返回到画图的那个线程里面,那个线程接到信号就停止工作,这样就完成我们的思考和设计了!
step3:实现
打开视频
首先我们需要引入接口打开视频,这个就需要我们引入相应的jar包,我们需要的有这些jar包
链接:https://pan.baidu.com/s/14o45g2hAnc40-wsi5Zl-xQ
提取码:wm1f
这里整理好了需要可以直接用~
之后用IDEA导入jar包:
File-----Project Structure-----Modules-----Dependencies----"+"------"JARs or Directories…"再导入就可以了~
导入之后这几行代码就可以完成视频功能(当然前提是你要自己写一个JFrame啦!就是这个里面的变量g)
Webcam webcam = Webcam.getDefault();
webcam.open();
while (true) {
// 获取摄像头拍到的数据
BufferedImage bufferedImage = webcam.getImage();
g.drawImage(bufferedImage, 100, 100,500,400, null);