【发布时间】:2011-12-09 21:07:23
【问题描述】:
我在 java 中遇到了简单的 MT 问题。我想同步访问控制台。一个例子: 第一个线程写入 System.out "Number one" Thread2 printl("Number two")。我想在不缓冲的情况下同步这个线程在控制台中按顺序写入数字。这是怎么做到的?
Thread one
Thread two
Thread one
Thread two
...
//代码
package com.example;
public class MyThread implements Runnable{
@Override
synchronized public void run(){
while(true){
System.out.println("Thread first");
}
}
}
//
package com.example;
public class MyThread2 implements Runnable {
@Override
synchronized public void run() {
// TODO Auto-generated method stub
System.out.println("");
}
}
//
package com.example;
import java.util.concurrent.Semaphore;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread th1= new Thread(new MyThread());
Thread th2= new Thread(new MyThread2());
th2.setPriority(Thread.MAX_PRIORITY);
th1.start();
th2.start();
}
}
【问题讨论】:
-
如果您在使用现有代码时遇到问题,请发布一些。你试过什么了?另外,除了homework 或某种学习练习之外,我不确定您为什么要这样做。如果这是作业,请将该标签也添加到问题中,以便我们知道只是提供提示。
-
如果要顺序写入,为什么要使用线程?这只是一个有趣的问题吗?
-
你需要两个线程交替吗?或者你需要任意数量的线程,而这个例子恰好是两个?
-
我喜欢阻塞线程并等待它访问控制台。这只是一个简单的例子..
标签: java multithreading console