package asmTest;public class TongOne extends Thread
{
private String cha;
static Object printer = new Object();
public TongOne(String cha)
{
this.cha = cha;
}
void print()
{
for (int i = 1; i <= 3; i++)
System.out.print(cha + " ");
}
public void run()
{
synchronized (printer)
{
for (int i = 1; i < 3; i++)
{
print();
System.out.println();
}
}
}
public static void main(String args[])
{
TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
test1.start();
test2.start();
test3.start();
}
}不知道是不是你想要的结果
package number;public class TongOne extends Thread{
private String cha;
static Object printer = new Object();
public TongOne(String cha){
this.cha = cha;
}
void print(){
synchronized(printer){
for(int i =1; i <=3;i++)
System.out.print(cha+ " ");
}
}
public void run(){
for(int i =1;i <3;i++){
print();
System.out.println();
}
}
public static void main(String args[]){
TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
try {
test1.start();
test1.join();
test2.start();
test2.join();
test3.start();
} catch (InterruptedException e) {
}
}
} 这样就可以了
你运行下就好了
private String cha;
static Object printer = new Object(); public TongOne(String cha) {
this.cha = cha;
} void print() {
synchronized (printer) {
for (int i = 1; i <= 3; i++)
System.out.print(cha + " ");
}
} public void run() { for (int i = 1; i < 3; i++) {
print();
System.out.println(); } } public static void main(String args[]) { TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
try {
test1.start();
test1.join();
test2.start();
test2.join();
test3.start(); } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
package asmTest;public class TongOne extends Thread
{
private String cha;
static Object printer = new Object();
public TongOne(String cha)
{
this.cha = cha;
}
void print()
{
for (int i = 1; i <= 3; i++)
System.out.print(cha + " ");
}
public void run()
{
synchronized (printer) {
for (int i = 1; i < 3; i++)
{
print();
System.out.println();
}
}
}
public static void main(String args[])
{
TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
test1.start();
test2.start();
test3.start();
}
}static Object printer = new Object();
synchronized (printer)//这两句里printer的意义是什么,
若不用printer,又有什么可代替的呢?
public final void join()
throws InterruptedException等待该线程终止。
public class TongOne extends Thread{
private String cha;
static Object printer = new Object();
public TongOne(String cha){
this.cha = cha;
}
void print(){
for(int i =1; i <=3;i++)
System.out.print(cha+ " ");
}
public void run(){
synchronized(printer){
for(int i =1;i <3;i++){
print();
System.out.println();
}
}
}
public static void main(String args[]){
TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
test1.start();
test2.start();
test3.start();
}
}
public class TongOne extends Thread{
private String cha;
static Object printer = new Object();
public TongOne(String cha){
this.cha = cha;
}
void print(){
for(int i =1; i <=3;i++)
System.out.print(cha+ " ");
}
public void run(){
for(int i =1;i <3;i++){
print();
System.out.println();
}
}
public static void main(String args[]){
TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C");
test1.start();
test1.join();
test2.start();
test2.join();
test3.start();
}
}
分析下原因吧。
A执行完run下面的for的一次循环以后,A休息去了,B上来干活了。
为什么啊,不是应该A做完了才能休息么。。不是啊,你的程序告诉我说,我只要执行print的时候不别人打断就行了,你又没说我在run中间不能被打断。
8楼的修改就达到了这个目的。
严重属于多线程滥用
去掉那些同步关键字吧,去掉多线程吧。直接调用run执行TongOne test1 = new TongOne("线程A");
TongOne test2 = new TongOne("线程B");
TongOne test3 = new TongOne("线程C"); test1.run();
test2.run();
test3.run();