JAVA 怎么实现多进程同步
在JAVA中怎么实现多个进程同步。进程的睡眠和唤醒方法各是什么,急求大侠,谢谢。谢谢、要看清楚哦,是进程哈,不是线程!...
在JAVA中怎么实现多个进程同步。进程的睡眠和唤醒方法各是什么,急求大侠,谢谢。谢谢、 要看清楚哦,是进程哈,不是线程!
展开
4个回答
2013-04-02
展开全部
你好,在Java中实现多个进程同步方法有两种,我就介绍通过继承Thread来实现线程来举例吧!第一种,创建一个Thread类的子类,在里面重写一个run()方法,然后在主线程main()方法里面创建几个类的对象,一个对象代表一个线程,然后通过start()方法启动线程。第二种,创建多个Thread类的子类,在里面重写一个run()方法,然后在主线程main()方法里面创建这些类的对象,一个对象代表一个线程,然后通过start()方法启动线程。两者的区别:第一种是多个线程同步完成一个任务,比如买票,第二种是不同线程完成不同的任务。intertupt()方法用来“吵醒”休眠的线程,sleep()方法让进程处于睡眠状态。答案不满意可以追问,想交流可以加我QQ:460148261,可以一起讨论。
展开全部
// 一个多线程售票通过单一锁实现同步
package test.thread.multis;
import java.util.Random;
// 售票员
public class TicketSeller implements Runnable {
// 票据服务
public static class Ticks {
int ticks = 100;
public boolean hasTick() {
return ticks <= 100 && ticks > 0;
}
public int getTick() {
return ticks;
}
public void saleTick() {
ticks--;
}
}
Ticks ticks = new Ticks();
@Override
public void run() {//
try {
long waitNextUser = (long) ((new Random().nextFloat()) * 1000);
Thread.sleep(waitNextUser);// 加一个延迟等待,来模拟实际售票
} catch (InterruptedException e) {
return;// 出现问题了,不能再卖票了
}
synchronized (ticks) {// 锁定锁所有票据
if (ticks.hasTick()) {
String saler = Thread.currentThread().getName();
System.out.println(saler + " " + ticks.getTick());
ticks.saleTick();
}
}
if (ticks.hasTick()) {// 检查是否还可以买票
run();
}
}
public static void main(String[] args) {
TicketSeller n = new TicketSeller();
Thread m1 = new Thread(n, "售票员_1");
Thread m2 = new Thread(n, "售票员_2");
Thread m3 = new Thread(n, "售票员_3");
m1.start();
m2.start();
m3.start();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
进程间同步用filelock
filelock可以保证同一个时间只有一个进程获取file的锁,从而达到进程间同步的目的
filelock可以保证同一个时间只有一个进程获取file的锁,从而达到进程间同步的目的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-02
展开全部
进程不是线程???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询