Scala�̕��s�����ƃA�N�^�[�A����R���N�V�����F�X�P�[���u���Ŋ֐��^�ŃI�u�W�F�N�g�w����Scala����i10�j�i1/3 �y�[�W�j

Scala�̓������Љ�A��{�\����֐��A�N���X�ȂǁAScala�̊�{�I�ȋ@�\�ɂ‚��ĉ���������A��

» 2012�N09��06�� 00��00�� ���J
[�����C���C�N���X���\�b�h�������]

�O��̂����炢�ƍ���̓��e

�@�O��̋L���uScala�̒��ی^�ƈÖق̌^�ϊ��^�����A�p�����[�^�����v�ł́A�uimplicit�v�L�[���[�h���g�p�����Öق̌^�ϊ����Öق̃p�����[�^�Ȃǂ��Љ�܂����B

�@�����Scala���W���Ŏ����Ă������s�����p���C�u����������R���N�V�������Љ�܂��B

�@��1��L���ł́AScala�W����REPL��Scala IDE�œ�����m�F���Ă݂܂����B����{�L���̃T���v���R�[�h�́A�ǂ���Ŋm�F���Ă����͂���܂��񂪁A�Θb�I�Ɏ��s�ł��A1�����ƂɃR�[�h�̌��ʂ��������ĕ֗��Ȃ̂ŁA��{�I�ɂ�REPL��p���Đ������Ă����܂��B

�@Scala IDE���g�p����ꍇ�A��1��L���́wScala IDE for Eclipse�ŁuHello Scala�I�v�x���Q�Ƃ��ăv���W�F�N�g���쐬���Ď��s���Ă��������BREPL���g�p����ꍇ�́A�R���\�[�����scala�R�}���h�����s���AREPL���N�����Ă��������B

Java�ł̕��s�����Ƃ��̖��

�@�}���`�R�ACPU����ʓI��PC�ł�������O�ɂȂ��Ă�������A�v���O�����̕��s�����Ŗ��ʂ��Ȃ����A�p�t�H�[�}���X�����コ���邱�Ƃ͓��R�̋Z�p�ƂȂ��Ă��܂��B

���L�f�[�^�ƃ��b�N���g�p����X���b�h���f��

�@Java�̏ꍇ�A���L�f�[�^�����b�N���g�p�����X���b�h���f���������Ă��܂��BJava�ŕ��s���������s����ɂ�Concurrent API�i�ujava.util.concurrent�v�p�b�P�[�W��API�j���g�p������A�usynchronized�v�L�[���[�h���g�p���ċ��L�f�[�^�ɑ΂���A�N�Z�X���R���g���[�����ĕ��s�������������܂��B

�@Java�̕��s�����Ɋւ����{�I�ȕ����́A���L�̋L�����Q�l�ɂ��Ă݂Ă��������B

�@�������A���̃��f���̏ꍇ�A�A�v���P�[�V�����̏��������G�����Ă���ƁA�M�����������}���`�X���b�h�̃A�v���P�[�V��������낤�Ƃ����ꍇ�ɓ���Ȃ�܂��B

�@�Ⴆ�΁A���L�f�[�^�𐧌䂷��͈͂�f�[�^�Ƀ��b�N��������^�C�~���O�A�������f�b�h���b�N�̉����Ȃǂ���������ƍl���Ď�������K�v������܂��B

�@�Ȃ��AJava�ł�5.0������s�������C�u�����Ƃ��āA�ujava.util.concurrent�v����������܂����B����API���g�p����΃}���`�X���b�h�v���O���~���O�ɂ����āA�ȑO���������N�����ɂ����Ȃ�܂��B

Concurrent API�̎g�p��

�@�ł�java.util.concurrent API���g�p�����ȒP�ȃT���v�������Ă݂܂��傤�B���L�̃T���v����Java�ŋL�q����Ă��܂��Bmain���\�b�h��Executors�N���X���g�p���AThreadSample��run���\�b�h��ʃX���b�h�Ŏ��s���Ă��܂��B

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class ThreadSample implements Runnable {
 
    private String name = "";
 
    public ThreadSample(String name) {
        this.name = name;
    }
 
    /**
     * ExecutorService#execute�Ŏ��s����郁�\�b�h.
     */
    public void run() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println(name + "count=" + i);
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
 
    public static void main(String[] args) {
        System.out.println("ThreadSample#main start");
        // ExecutorService�쐬
        ExecutorService ex = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 3; i++) {
            ex.execute(new ThreadSample("[Thread-" + i + "]"));
        }
        ex.shutdown();
        System.out.println("ThreadSample#main end");
    }
}

�@��L�v���O���������s����ƁA���̊‹��ł͉��L�̂悤�ȏ��Ԃŏ��������s����܂����B�ʃX���b�h��1�b���ƂɃJ�E���g�A�b�v���Ă��܂��B

ThreadSumple#main start
[Thread-0]count=0
ThreadSumple#main end
[Thread-0]count=1
[Thread-0]count=2
[Thread-1]count=0
[Thread-1]count=1
[Thread-1]count=2
[Thread-2]count=0
[Thread-2]count=1
[Thread-2]count=2

�@java.util.concurrent API�ɂ́A�X���b�h�v�[�����O�ƍė��p�̎d�g�݂��X�P�W���[�����O�A�񓯊������Ɋւ���@�\������A�}���`�X���b�h�A�v���P�[�V�����̎������ׂ�啝�Ɍy���ł��܂��B�������A���L�f�[�^�ƃ��b�N�̃��f���Ƃ�����{�I�Ȏd�g�݂͕ς���Ă��܂���B

Scala�ŕ��s�������s�����߂�3�‚̕��@

�@�ł́AScala�ŕ��s���������s�������ꍇ�͂ǂ̂悤�ɂ���΂悢�̂ł��傤���B�����‚����@�͂���̂ŁA���ԂɏЉ�Ă����܂��傤�B

�y1�zThread�N���X��synchronized���g��

�@1�–ڂ́A�ʏ��Java�Ɠ�����Thread�N���X��synchronized���g�����@�ł��BScala����Java�̃N���X�͂��̂܂܎g����̂ŁAThread�N���X�͂��̂܂܎g���܂��B

�@�܂��ARunnable�C���^�[�t�F�C�X���g���C�g�Ƃ��Ĉ����Asynchronized�L�[���[�h�́A�uAnyRef�v�N���X�̃��\�b�h�Ƃ��Ē񋟂���Ă��܂��B��قǂ�Java�T���v����Thread�𒼐ڎg�p����`��Scala�ɏ��������Ă݂܂��傤�i�����̃T���v���A�v����Eclipse�Ŏ��s���Ă��������j�B

object Main {
    def main(args: Array[String]) = {
        println("ThreadSample#main start");
        for (i <- 0 to 3) {
            val t = new Thread(new ThreadSample("[Thread-" + i + "]"))
            t.start()
        }
        println("ThreadSample#main end")
    }
}
 
class ThreadSample(name: String) extends Runnable {
    def run() = {
        for (i <- 0 to 3) {
            println(name + "count=" + i)
            Thread.sleep(1000)
        }
    }
}

�@�v���O���������s���Ă݂�ƁA���Ȃ����삷�邱�Ƃ�������܂��BScala�ł͗�O���L���b�`����K�v���Ȃ��̂ŗ]�v��try-catch�����Ȃ��A�V���v���ȋL�q���ł��Ă܂��ˁB

�y2�zjava.util.concurrent API��Scala����g��

�@2�–ڂ͐�قǐ�������java.util.concurrent API��Scala����g�����@�ł��B�P����Scala�̍\���ɒu�������邾���œ��삵�܂��i�����̃T���v���A�v����Eclipse�Ŏ��s���Ă��������j�B

import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
 
object Main {
    def main(args: Array[String]) = {
        println("ThreadSumple#main start")
        // ExecutorService�쐬
        val ex = Executors.newSingleThreadExecutor()
        for (i <- 0 to 3) {
            ex.execute(new ThreadSample("[Thread-" + i + "]"))
        }
        ex.shutdown()
        println("ThreadSumple#main end")
    }
}
 
class ThreadSample(name: String) extends Runnable {
    def run() = {
        for (i <- 0 to 3) {
            println(name + "count=" + i)
            Thread.sleep(1000)
        }
    }
}

�y3�zScala�̎��•��s�����@�\���g��

�@3�–ڂ́AScala�̎��•��s�����@�\���g�����@�ł��BScala�ł́u�A�N�^�[�v�ƌĂ΂��X���b�h�Ɏ����I�u�W�F�N�g���m�Ń��b�Z�[�W���������A���s�������s���܂��B�����Java�̎��‹��L�f�[�^���b�N���f���Ƃ͈Ⴂ�A�f�[�^�̋��L���Ȃ����b�Z�[�W�������f���ł��B

�@�p�t�H�[�}���X�ɂ����Ă͓K�؂ɐ݌v���ꂽ���L�f�[�^���b�N���f���ɂ͂��Ȃ��܂��񂪁A�A�N�^�[���g�����f�b�h���b�N�⋣����������₷�����Ƃ������b�g�ɂȂ�܂��B���y�[�W����A���ۂɃA�N�^�[���g�p���ăT���v���v���O�������쐬���Ă݂܂��傤�B

�@�@�@�@�@�@ 1|2|3 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; if( !this.isSubscription ) { this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); } }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

4AI by IT - AIAAA
Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B