1
1
package threadDev ;
2
2
3
- // https://docs.hazelcast.org/docs/1.9/manual/html/ch07s02.html
4
-
5
- import java .io .Serializable ;
6
3
import java .util .concurrent .*;
7
4
8
5
public class Test1 {
9
- public static void main (String [] args ){
10
-
11
- //ThreadPoolExecutor es = new ThreadPoolExecutor(10); //Hazelcast.getExecutorService();
12
-
13
- final int _pcautoSchedulerPoolSize = 10 ;
14
- final int KEEP_ALIVE_TIME = 60 ;
15
-
6
+ public static void main (String [] args ) {
7
+ final int CORE_POOL_SIZE = 10 ;
16
8
final int MAX_POOL_SIZE = 11 ;
17
- final int CORE_POOL_SIZE = 10 ; // Example value, set according to your needs
9
+ final int KEEP_ALIVE_TIME = 60 ;
18
10
19
11
ThreadPoolExecutor executor = new ThreadPoolExecutor (
20
12
CORE_POOL_SIZE ,
21
13
MAX_POOL_SIZE ,
22
14
KEEP_ALIVE_TIME ,
23
15
TimeUnit .SECONDS ,
24
16
new SynchronousQueue <>(),
25
- new ThreadPoolExecutor .AbortPolicy () // DiscardPolicy
17
+ new ThreadPoolExecutor .AbortPolicy ()
26
18
);
27
19
28
- //Test1 t1 = new Test1();
29
- Fibonacci fibonacci = new Fibonacci ();
30
- System .out .println ("executor submit task" );
31
-
32
- int N = 3 ;
33
- Future future = executor .submit (() -> {
20
+ int N = 10 ;
21
+ Future <Integer > future = executor .submit (() -> {
34
22
System .out .println ("--> Thread name : " + Thread .currentThread ().getName () + ", id = " + Thread .currentThread ().getId ());
35
- //fibonacci.call(10);
36
- new Fibonacci (N );
23
+ return new Fibonacci2 (N ).calculate ();
37
24
});
38
25
39
- Fibonacci f = new Fibonacci (10 );
40
-
41
- // FutureTask<Integer> futureTask = new FutureTask<>(() -> {
42
- // System.out.println("--> Thread name : " + Thread.currentThread().getName() + ", id = " + Thread.currentThread().getId());
43
- // // Simulate some work, e.g., Fibonacci calculation
44
- // //new Fibonacci(10); // Replace '10' with 'N' if 'N' is defined elsewhere
45
- // });
46
-
47
- for (int i = 0 ; i < 3 ; i ++){
26
+ for (int i = 0 ; i < 3 ; i ++) {
48
27
executor .submit (() -> {
49
28
System .out .println ("--> Thread name : " + Thread .currentThread ().getName () + ", id = " + Thread .currentThread ().getId ());
50
- new Fibonacci ( 2 );
29
+ new Fibonacci2 ( 2 ). calculate ( );
51
30
});
52
31
}
53
32
54
-
55
33
try {
56
-
57
- // while(!futureTask.isDone()){
58
- // System.out.println("wait for futureTask done, sleep 3 milli sec");
59
- // Thread.sleep(3);
60
- // }
61
- //
62
- // System.out.println("futureTask.isDone() = " + futureTask.isDone());
63
- // System.out.println("futureTask result = " + futureTask.get());
64
-
65
- //return future.get(3, TimeUnit.SECONDS);
66
- System .out .println ("future.isDone() = " + future .isDone ());
67
- System .out .println ("future result = " + future .get (10 , TimeUnit .SECONDS ));
34
+ System .out .println ("Waiting for future result..." );
35
+ Integer result = future .get (10 , TimeUnit .SECONDS );
36
+ System .out .println ("Future result: " + result );
68
37
} catch (TimeoutException e ) {
69
- System .out .println ("future cancel " );
38
+ System .out .println ("Future task timed out, cancelling... " );
70
39
future .cancel (true );
71
40
} catch (ExecutionException e ) {
72
- throw new RuntimeException (e );
41
+ System .out .println ("Exception occurred during task execution" );
42
+ e .printStackTrace ();
73
43
} catch (InterruptedException e ) {
74
- throw new RuntimeException ( e );
75
- } finally {
76
- System . out . println ( "executor shutdown" );
44
+ System . out . println ( "Main thread interrupted" );
45
+ e . printStackTrace ();
46
+ } finally {
77
47
executor .shutdown ();
78
48
}
79
49
80
- System .out .println (123 );
81
-
50
+ System .out .println ("Main method finished" );
82
51
}
52
+ }
83
53
84
- public void myFunc (){
85
- System .out .println (123 );
54
+ class Fibonacci2 {
55
+ private final int N ;
56
+
57
+ public Fibonacci2 (int N ) {
58
+ this .N = N ;
86
59
}
87
60
61
+ public int calculate () {
62
+ System .out .println ("Fibonacci2 calculate, N = " + N );
63
+ return fibonacci (N );
64
+ }
88
65
89
- }
66
+ private int fibonacci (int n ) {
67
+ if (n <= 1 ) return n ;
68
+ return fibonacci (n - 1 ) + fibonacci (n - 2 );
69
+ }
70
+ }
0 commit comments