同步代码块
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权。也进不去。因为没有获取锁。
火车上的卫生间 --经典
同步的前提:
1.必须要有2个或者2个以上的线程。
2.必须是多个线程使用同一个锁。
必须保证同步中只能有一个线程在运行。
好处:解决了多线程的安全问题。
弊端:多个线程需要判断锁。较为消耗资源。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
同步代码块
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权。也进不去。因为没有获取锁。
火车上的卫生间 --经典
同步的前提:
1.必须要有2个或者2个以上的线程。
2.必须是多个线程使用同一个锁。
必须保证同步中只能有一个线程在运行。
好处:解决了多线程的安全问题。
弊端:多个线程需要判断锁。较为消耗资源。
*/
class Ticketest implements Runnable
{
private int tick = 100;
Object obj = new Object();
public void run()
{
while(true)
{
synchronized(obj)
{
if(tick>0)
{
try
{
Thread.sleep(10);
}
catch (Exception e)
{
}
System.out.println(Thread.currentThread().getName()+"....tick="+tick--);
}
}
}
}
}
class Test_11_09
{
public static void main(String[] args)
{
System.out.println("Hello Wolrd");
}
}
阅读(1083) | 评论(0) | 转发(0) |