基本上感觉自己学习的东西都是学会了立马就用,很少有机会能专门花时间去学习一些东西,近些时候不忙,准备把公司的面试题全做一遍,难的倒是不多,但是很多人都不会做,问题就是出在实践上。
言归正传。多线程就目前而言,纯是兴趣上的学习,并没有真实的应用场景。以前觉java多线程很乱,很多概念没似懂非懂,但是实战中写几个实例就一目了然了。
昨天练习线程安全时提到了synchronized关键字,其作用原理其实就是把一个或者一部份资源锁住,只允许当前这个进程使用。我理解线程同步就让各个线程之间能够控制资源的分配,比方说锁定资源,释放资源以及等待资源的释放。
下面这个例子之前在网上看到的,自己动手实现了一遍。主要思路就是有一个盘子,有两个人去对盘子操作,其中一个负责放鸡蛋,另一个只负责取走鸡蛋。当盘子里有鸡时,不能再放,当盘子是空的时候无法再取走产鸡蛋。
代码如下 | 复制代码 |
package threads; public class TestSynchronous public static void main(String[] args) public static class Thread1 extends Thread //负责放鸡蛋的人 public Thread1(Plate plate) public void run() public static class Thread2 extends Thread //负责取走产鸡蛋的进度 public Thread2(Plate plate) public void run() public static class Plate //盘子 public Plate() public void putEgg(Object egg) public void eggAway() public boolean hasEgg() |