
写到氏辩外橡核饥面就是了哈。。
public class Example8_1 {
public static void main(String[] args) {
WriteWordThread zhang, wang
zhang = new WriteWordThread("张小红")// 出错
wang = new WriteWordThread("JamsKeven")// 出错
zhang.start()
for (int i = 1i <= 8i++) {
System.out.println("主线程运行.")
}
wang.start()
}
}
class WriteWordThread extends Thread {
WriteWordThread(String s) {
setName(s)
}
public void run() {
for (int i = 1i <= 8i++) {
System.out.println("我是线程:" + getName())
}
}
}
传统的进程间通信的方式有大致如春没下几种肆森戚:(1) 管道(PIPE)
(2) 命名管道(FIFO)
(3) 信号量(Semphore)
(4) 消息队列(MessageQueue)
(5) 共享内存(SharedMemory)
(6) Socket
Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用裂陵了(这些进程间通信都是靠系统调用来实现的)。但是Java也有很多方法可以进行进程间通信的。
除了上面提到的Socket之外,当然首选的IPC可以使用Rmi,或者Corba也可以。另外Java nio的MappedByteBuffer也可以通过内存映射文件来实现进程间通信(共享内存)。
楼主,这是一个多线程同步问题,我稍微修改了一下程序,仅供参考PS:四个线程不一颤晌定都能抢到CUP时间片,所以有些线程有可能卖不到票。茄兆锋楼主可以多运行几次,会得到不同的运行效果,非常有意思。呵呵。猜祥。。
public class TestThread{
public static void main(String[] args){
MyThread mt = new MyThread()
new Thread(mt).start()
new Thread(mt).start()
new Thread(mt).start()
new Thread(mt).start()
}
}
class MyThread extends Thread{
private int t=100
public void run(){
while(true){
synchronized(this){//因为有多个线程共享属性t,故需要使用到synchronized,进行同步
if(t>0) System.out.println(Thread.currentThread().getName()+"卖票"+t--)
else break//此句是为了防止死循环,当t=0是退出循环
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)