멀티프로세싱 - 프로세스 여러개가 동시에 작동해서 작업을 빨리 수행 하는 것 (1개의 프로세스가 3가지 작업을 15초에 할 수 있는데 3개의 프로세스로 나누어 작업하여 5초만에 할 수 있다)
멀티프로세싱 할 경우 cpu가 여러개 있으면 좋다 (병렬처리 가능)
프로그램이 멀티코어를 지원 할 경우에만 멀티프로세싱을 사용 할 수 있다
--------------------------------------
쓰레드
일을 실행하는 단위
일종의 스택
멀티스레드 - 라운드로빈 - 타임슬라이싱 - 일을 시간을 쪼개서 돌아가면서 함
스레드(thread)는 어떠한 프로그램 내에서, 특히프로세스내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을멀티스레드(multithread)라고 한다.
기본자료형(예를들어 int 등)은 int a = 1; 이라고 만들면 a 에 1이라는 숫자가 들어간다.
하지만 클래스자료형은 명함 m1 = new 명함(); 이라고 만들면 m1에 데이터가 아닌 그 데이터를 가리키는 주소가 들어간다.
위에서 생성한 m1을 명함 m2 = m1; 이런식으로 m2에 넣는다고 하더라도 데이터가 들어가는 것이 아닌 주소가 들어가게 된다.
즉 아래와 같이 기본자료형반환() 이라는 함수를 호출하여 반환된 값을 출력해보면 값이 나오지만, 클래스자료형반환() 이라는 함수를 호출하여 반환된 값을 출력해보면 해당 데이터의 주소가 나온다. (컴퓨터에 따라 주소가 아니라 인스턴스의 내용이 대괄호 안에 나올 수 있다.)
package ch13;
class A {
int a = 10;
}
public class Test {
static void sample(A a) {
System.out.println(a.a);
}
public static void main(String[] args) {
// 기본자료형은 데이터 자체를 저장한다
int a1 = 10;
int a2 = a1;
a1 = a1 + 10;
System.out.println(a1);
System.out.println(a2);
// 클래스자료형은 인스턴스의 주소값을 저장한다
A test = new A();
A test1 = test;
test.a = test.a + 10;
System.out.println(test.a);
System.out.println(test1.a);
// 서로 다른 인스턴스 이기 때문에 데이터가 따로 계산된다
A test2 = new A();
A test3 = new A();
test2.a = test2.a + 10;
System.out.println(test2.a);
System.out.println(test3.a);
}
}