我完成了一些基本代码,为两个线程分配任务。但我必须制作两个版本,其中一个可以让两个线程同时调用任务,一个线程永远不会并发。但我甚至不确定我制作了哪个版本,更不用说我如何识别它了。
import java.util.*;
public class Week5
{
static int sharedData = 0;
public static void main(String[] args)
{
atomic myAtomic = new atomic();
Thread thread1 = new Thread(myAtomic);
thread1.setName("thread 1");
Thread thread2 = new Thread(myAtomic);
thread2.setName("thread 2");
thread1.start();
thread2.start();
try
{
thread1.join();
thread2.join();
}
catch(InterruptedException e)
{
System.out.println("Thread " + Thread.currentThread().getName() + "was interrupted");
}
System.out.println("sharedData = " + sharedData);
System.out.println("Exiting Main function from: " + Thread.currentThread().getName());
}
public static class atomic implements Runnable
{
public synchronized void run()
{
System.out.println("Starting 'Atomic' Function from: " + Thread.currentThread().getName());
sharedData = sharedData + 1;
System.out.println("Exiting 'Run' function from: " + Thread.currentThread().getName());
}
}
}
答案 0 :(得分:0)
您的线程永远不会同时运行相同的任务,因为run()
方法是同步的,这意味着一次只能有一个线程进入同一个对象。如果没有同步,两个线程都可能同时执行它。