package com.njbdqn;java
import jdk.management.resource.internal.inst.InitInstrumentation;併發
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
ide
public class ThreadDemo {
static int[] arr = new int[10];
static int i=0;
this
static void cal1(int ix){
int sum = 0;
for (int i = ix*10+1; i <=(ix+1)*10; i++) {
sum += i;
}
arr[ix] = sum;
i++;
System.out.println(Thread.currentThread().getName()+":"+sum);
}
線程
static int cal3(int ix){
int sum = 0;
for (int i = 0; i < 100; i+=10) {
sum += i+ix+1;
System.out.println(Thread.currentThread().getName()+":"+sum);
}
return sum;
}
get
static void cal2(int ix){
int sum = 0;
for (int i = 0; i < 100; i+=10) {
sum += i+ix+1;
System.out.println(Thread.currentThread().getName()+":"+sum);
}
arr[ix] = sum;
i++;
it
}io
static class Sum implements Runnable{
private int ix;
public Sum(int ix){
this.ix =ix;
}
@Override
public void run() {
cal2(ix);
}
}
class
public static void main(String[] args) throws InterruptedException, ExecutionException {
//方法一
// Thread[] ths = new Thread[10];
// for (int i = 0; i < ths.length; i++) {
// ths[i] = new Thread(new Sum(i));
// ths[i].start();
ths[i].join(); //等到這條線程死亡
// }
// while(i<10){
// Thread.sleep(1000);
// }
import
//方法二
ExecutorService service = Executors.newFixedThreadPool(10);
//順序執行
// for (int j = 0; j < arr.length; j++) {
// final int _j=j;
// arr[j] = service.submit(new Callable<Integer>() {
// @Override
// public Integer call() throws Exception {
// return cal3(_j);
// }
// }).get();
// }
//併發執行
for (int j = 0; j < arr.length; j++) {
service.submit(new Sum(j));
}
while(i<10){
Thread.sleep(200);
}
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println("sum all : "+sum);
// new Thread(){
// @Override
// public void run() {
// super.run();
// }
// }.start();
}
}
public class MyThread exends Thread{
private static Integer count=0;
public void run(){
while(true){
synconized(count) {
int flag = Integer.parseInt(Thread.currentThread().getName().split("-")[1]);
if(flag%2==0){
count++;
}else{
count--;
}
}
}
}
public static void main(String [] args){
for (int i=0;i<4;i++) {
new MyThread().start()
}
}
}
public class MyThread implements Runable{ private int count=0; public void run() { while(true){ int flag = Integer.parseInt(Thread.currentThread().getName().split("-")[1]); if(flag%2==0){ add(); }else{ sub(); } } } public synconized void add(){ count++; } public synconized void sub(){ count--; } public static void main(String [] args){ MyThread mt1 = new MyThread(); for (int i=0;i<4;i++) { new Thread(mt1).start(); } } }