黑马程序员技术交流社区
标题:
多线程控制问题
[打印本页]
作者:
adamjy
时间:
2014-4-21 23:13
标题:
多线程控制问题
本帖最后由 adamjy 于 2014-4-22 12:39 编辑
代码如下,如何只修改run()方法,让程序打印0 1 2 0 1 2或者0 0 1 1 2 2
class MyRunnable implements Runnable{
public void run(){
for(int i= 0 ; i<3 ; i++){
System.out.print(i);
}
}
}
public class Demo{
public static void main(String args[]){
MyRunnable runnable = new MyRunnable();
//新建两个线程
Thread t1 = new Thread (runnable);
Thread t2 = new Thread (runnable);
t1.start();
t2.start();
}
}
复制代码
作者:
ノtrack
时间:
2014-4-21 23:20
public class ReflectTest3
{
public static void main(String args[])throws Exception{
MyRunnable runnable = new MyRunnable();
//新建两个线程
Thread t1 = new Thread (runnable);
Thread t2 = new Thread (runnable);
t1.start();
t1.join();// 不知道这样行不
t2.start();
}
}
class MyRunnable implements Runnable{
public void run(){
for(int i= 0 ; i<3 ; i++){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
复制代码
作者:
ノtrack
时间:
2014-4-21 23:22
我运行的结果是
Thread-0 0
Thread-0 1
Thread-0 2
Thread-1 0
Thread-1 1
Thread-1 2
作者:
清风夜独醉
时间:
2014-4-21 23:28
在run()方法里加个锁就行了。代码如下:
class MyRunnable implements Runnable{
Object obj = new Object();
public void run(){
synchronized(obj){
for(int i= 0 ; i<3 ; i++){
System.out.print(i);
}
}
}
}
public class Demo{
public static void main(String args[]){
MyRunnable runnable = new MyRunnable();
//新建两个线程
Thread t1 = new Thread (runnable);
Thread t2 = new Thread (runnable);
t1.start();
t2.start();
}
}
复制代码
作者:
曹冬明
时间:
2014-4-21 23:33
本帖最后由 曹冬明 于 2014-4-21 23:39 编辑
加个锁
作者:
悠然丶
时间:
2014-4-21 23:34
加上同步锁就可以了
class MyRunnable implements Runnable{
public void run(){
synchronized (this) {
for(int i= 0 ; i<3 ; i++){
System.out.print(i);
}
}
}
}
作者:
唐宋元明清
时间:
2014-4-22 08:53
class MyRunnable implements Runnable{
public void run(){
for(int i= 0 ; i<3 ; i++){
System.out.print(i);
Thread.yield(); //这里添加个方法,让当前线程暂停执行一次
}
}
}
public class Demo1{
public static void main(String args[]){
MyRunnable runnable = new MyRunnable();
//新建两个线程
Thread t1 = new Thread (runnable);
Thread t2 = new Thread (runnable);
t1.start();
t2.start();
}
}
作者:
Mr.飞碍特
时间:
2014-4-22 09:19
class MyRunnable implements Runnable{
Object obj = new Object();
public void run(){
synchronized(obj){
for(int i= 0 ; i<3 ; i++){
System.out.print(i);
}
}
}
}
public class Demo{
public static void main(String args[]){
MyRunnable runnable = new MyRunnable();
Thread t1 = new Thread (runnable);
Thread t2 = new Thread (runnable);
t1.start();
t2.start();
}
}
复制代码
只需要加个锁就成了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2