并发线程

时间:2016-02-11 08:26:23

标签: java multithreading concurrency

我完成了一些基本代码,为两个线程分配任务。但我必须制作两个版本,其中一个可以让两个线程同时调用任务,一个线程永远不会并发。但我甚至不确定我制作了哪个版本,更不用说我如何识别它了。

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());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您的线程永远不会同时运行相同的任务,因为run()方法是同步的,这意味着一次只能有一个线程进入同一个对象。如果没有同步,两个线程都可能同时执行它。