黑马程序员技术交流社区
标题:
java多线程之同步
[打印本页]
作者:
myself123
时间:
2015-8-25 10:30
标题:
java多线程之同步
1、同步代码块
格式:synchronized(对象)
{
需同步的代码;
}
锁可以是任意对象。
2、同步方法
格式:修饰词 synchronized 返回值类型 函数名(参数列表)
{
需同步的代码;
}
锁为this,即本类对象。
另外,静态同步方法的锁为类名.class。
3、代码:
class Ticket implements Runnable {
private int num = 100;
boolean flag = true;
//覆盖run方法,创建任务
@Override
public void run() {
if (flag) {
while (true) {
//同步代码块
synchronized (this) {
if (num > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
System.out.println(Thread.currentThread().getName()
+ "同步代码块" + num--);
}
}
}
} else {
while (true) {
this.show();
}
}
}
//同步函数
public synchronized void show() {
if (num > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
System.out.println(Thread.currentThread().getName() + "同步函数"
+ num--);
}
}
}
public class TicketDemo {
public static void main(String[] args) {
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
t.flag = false;
t2.start();
}
}
复制代码
作者:
耀阳圣尊
时间:
2015-8-25 10:42
写的不错,赞一个
作者:
myself123
时间:
2015-8-25 21:44
耀阳圣尊 发表于 2015-8-25 10:42
写的不错,赞一个
感谢感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2