Thread-6 SparkContext: Java version 11.0.28 25/12/20 00:10:15.185 INFO Thread-6 ResourceUtils: ==== : No custom resources configured for spark.driver. 25/12/20 00:10:15.186 INFO Thread-6 ResourceUtils : ============================================================== 25/12/20 00:10:15.186 INFO Thread-6 25/12/20 00:10:26.899 INFO Thread-6 MemoryStore: MemoryStore cleared 25/12/20 00:10:26.900 INFO Thread @1c40b15e]. 25/12/20 00:10:30.149 INFO Thread-6 UIMetaListener: UIMetaListener closed!
Thread-2,5,main], Thread[Thread-3,5,main], Thread[Thread-4,5,main], Thread[Thread-5,5,main], Thread[Thread Thread-2,5,main], Thread[Thread-3,5,main], Thread[Thread-4,5,main], Thread[Thread-5,5,main], Thread[Thread Thread-0 sync = [Thread[Thread-3,5,main], Thread[Thread-4,5,main], Thread[Thread-5,5,main], Thread[Thread 0,5,main]] sync = [Thread[Thread-3,5,main], Thread[Thread-4,5,main], Thread[Thread-5,5,main], Thread[Thread Thread-2 sync = [Thread[Thread-3,5,main], Thread[Thread-4,5,main], Thread[Thread-5,5,main], Thread[Thread
Thread-6 Producer wait! Thread-7 Producer wait! Thread-8 Producer wait! Thread-9 Producer wait! Thread-10:取出一个产品,现在产品数=4 Thread-5:存入一个产品,现在产品数=5 Thread-6 Producer wait! Thread-7 Producer wait! Thread-11:取出一个产品,现在产品数=4 Thread-12:取出一个产品,现在产品数=3 Thread-6:存入一个产品,现在产品数=4 Thread-7:存入一个产品,现在产品数=5 Thread
start(); } } } 运行结果 读取Thread-0 读取Thread-2 读取Thread-1 读取Thread-4 读取Thread-3 读取Thread-5 读取Thread -6 读取Thread-7 后续操作Thread-7 后续操作Thread-0 后续操作Thread-1 后续操作Thread-5 后续操作Thread-2 后续操作Thread-6 后续操作Thread start(); } } } 运行结果 读取Thread-0 读取Thread-3 读取Thread-2 读取Thread-1 读取Thread-5 读取Thread-4 读取Thread -7 Thread-1额外任务执行 后续操作Thread-1 后续操作Thread-0 后续操作Thread-5 后续操作Thread-7 后续操作Thread-3 后续操作Thread-2 后续操作Thread -6 读取Thread-7 读取Thread-8 读取Thread-9 后续操作Thread-9 后续操作Thread-5 后续操作Thread-8 后续操作Thread-7 后续操作Thread-6
threadName:Thread-2 threadName:Thread-4 Thread-2 wait 2s threadName:Thread-3 Thread-3 wait 0.5s threadName:Thread -6 Thread-6 wait 2s threadName:Thread-1 Thread-1 wait 0.5s threadName:Thread-0 Thread-0 wait 2s Thread Thread-1 ThreadName:Thread-2 ThreadName:Thread-3 ThreadName:Thread-4 ThreadName:Thread-5 ThreadName:Thread ThreadName:Thread-6,end! ThreadName:Thread-5,end!
Thread-2', 1, ':now left:', 12) Thread-2: release('Thread-4', 3, ':now left:', 11) Thread-4: release ('Thread -6', 5, ':now left:', 10) Thread-6: release ('Thread-5', 4, ':now left:', 9) Thread-5: release ('Thread Thread-2', 1, ':now left:', 2) Thread-2: release ('Thread-4', 3, ':now left:', 1) Thread-4: release ('Thread -6', 5, ':now left:', 0) Thread-6: release('Thread_id', 4, ' No more tickets') 我们使用了两个全局变量,一个是i,用以储存剩余票数 -6', 5, ':now left:', 9) Thread-6: release('Thread-7', 6, ':now left:', 8) Thread-7: release('Thread
Thread-3 等待 Thread-2 线程:Thread-2 等待 Thread-1 线程:Thread-0 等待 main 线程:Thread-8 等待 Thread-7 线程:Thread-7 等待 Thread -6 线程:Thread-6 等待 Thread-5 线程:Thread-9 等待 Thread-8 主线程执行完毕 Thread-0开始执行 Thread-1开始执行 Thread-2开始执行 Thread -3开始执行 Thread-4开始执行 Thread-5开始执行 Thread-6开始执行 Thread-7开始执行 Thread-8开始执行 Thread-9开始执行 从执行结果可以很容易理解, 程序运行起来之后 } } 输出, 线程Thread-0开始执行 线程Thread-1开始执行 线程Thread-2开始执行 线程Thread-3开始执行 线程Thread-4开始执行 线程Thread-5开始执行 线程Thread 开始执行 线程: thread-1 开始执行 线程: thread-2 开始执行 线程: thread-3 开始执行 线程: thread-4 开始执行 线程: thread-5 开始执行 线程: thread
} Thread-8需要用车 Thread-8租车成功,等待了:0 Thread-1需要用车 Thread-1租车成功,等待了:0 Thread-12需要用车 Thread-12租车成功,等待了:0 Thread -6需要用车 Thread-6租车成功,等待了:0 Thread-13需要用车 Thread-13租车成功,等待了:0 Thread-15需要用车 Thread-15租车成功,等待了:0 Thread- Thread-2租车成功,等待了:2858 Thread-6还车了! Thread-3租车成功,等待了:2513 Thread-8还车了!
thread-5 25 5 leave run thread name-->thread-5 26 1 run thread name-->thread-7 27 1 run thread name-->thread -6 44 3 get thread name-->thread-6 45 4 set thread name-->thread-6 46 5 leave run thread name-->thread -6 48 3 get thread name-->thread-6 49 4 set thread name-->thread-6 50 5 leave run thread name-->thread -6 32 2 enter thread name-->thread-6 33 3 get thread name-->thread-6 34 4 set thread name-->thread-6 35 1 run thread name-->thread-7 36 5 leave run thread name-->thread-6 37 2 enter thread name-->thread
Thread-0 子线程正在执行:Thread-1 子线程正在执行:Thread-2 子线程正在执行:Thread-3 子线程正在执行:Thread-4 子线程正在执行:Thread-5 子线程正在执行:Thread Thread-0 子线程正在执行:Thread-1 子线程正在执行:Thread-2 子线程正在执行:Thread-3 子线程正在执行:Thread-4 子线程正在执行:Thread-5 子线程正在执行:Thread Thread-2 子线程正在执行任务,当前线程为:Thread-3 子线程正在执行任务,当前线程为:Thread-4 子线程正在执行任务,当前线程为:Thread-7 子线程正在执行任务,当前线程为:Thread
Thread-0 子线程正在执行:Thread-1 子线程正在执行:Thread-2 子线程正在执行:Thread-3 子线程正在执行:Thread-4 子线程正在执行:Thread-5 子线程正在执行:Thread Thread-0 子线程正在执行:Thread-1 子线程正在执行:Thread-2 子线程正在执行:Thread-3 子线程正在执行:Thread-4 子线程正在执行:Thread-5 子线程正在执行:Thread Thread-2 子线程正在执行任务,当前线程为:Thread-3 子线程正在执行任务,当前线程为:Thread-4 子线程正在执行任务,当前线程为:Thread-7 子线程正在执行任务,当前线程为:Thread
1has read the value :null 5 Thread-3has read the value :null 6 Thread-5has read the value :null 7 Thread 8 Thread-6 has complte write :4138 9 Thread-4 is ready to write ! 3has read the value :3333 23 Thread-1has read the value :3333 24 Thread-5has read the value :3333 25 Thread 26 Thread-6 has complte write :6568 27 Thread-4 is ready to write !
count.countDown(); // 计数器减1,多个线程开始同时执行 System.out.println("主线程打印"); } } 运行结果 主线程打印 Thread-3 Thread System.out.println("主线程打印"); } } 运行结果 Thread-0 Thread-2 Thread-1 Thread-3 Thread-4 Thread-5 Thread
Thread.sleep(1000); //创建发布者 new Thread(new Publisher()).start(); } } 运行结果如下: Thread -6 发布:第1消息 Thread-0 接收:第1消息 Thread-1 接收:第1消息 Thread-2 接收:第1消息 ------------------ Thread-6 发布:第2消息 Thread -0 接收:第2消息 Thread-1 接收:第2消息 Thread-2 接收:第2消息 ------------------ Thread-6 发布:第3消息 Thread-0 接收:第3消息 Thread
线程Thread-6正在写入数据... 线程Thread-7正在写入数据... 线程Thread-4写入数据完毕,等待其他线程写入完毕 线程Thread-7写入数据完毕,等待其他线程写入完毕 线程Thread-5写入数据完毕,等待其他线程写入完毕 线程Thread-6写入数据完毕, 等待其他线程写入完毕 Thread-6所有线程写入完毕,继续处理其他任务...
获得锁 Thread-3 开始运行 Thread-1 开始运行 Thread-2 获得锁 Thread-4 开始运行 Thread-4 获得锁 Thread-5 开始运行 Thread-3 获得锁 Thread -6 开始运行 Thread-6 获得锁 Thread-1 获得锁 Thread-9 开始运行 Thread-7 开始运行 Thread-5 获得锁 Thread-8 开始运行 Thread-9 获得锁 ReentrantLock(true); 执行结果有时如下 Thread-0 开始运行 Thread-2 开始运行 Thread-1 开始运行 Thread-3 开始运行 Thread-4 开始运行 Thread 开始运行 Thread-2 获得锁 Thread-7 开始运行 Thread-1 获得锁 Thread-9 开始运行 Thread-8 开始运行 Thread-3 获得锁 Thread-4 获得锁 Thread
Thread-2 获得锁 Thread-1 释放锁 Thread-2 释放锁 Thread-3 获得锁 Thread-4 获得锁 Thread-4 释放锁 Thread-5 获得锁 Thread-3 释放锁 Thread -6 获得锁 Thread-6 释放锁 Thread-5 释放锁 BoundedSemaphore或Semaphore的用法几乎是一样的,这两个信号量有什么区别呢?
name__ == '__main__': for i in range(10): threading.Thread(target=worker).start() <Thread(Thread
ThreadPool.hpp] [30] - Thread-9 HandlerTask... [2025-02-04 09:54:51 ][INFO] [2360325] [ThreadPool.hpp] [30] - Thread successfully... [2025-02-04 09:54:55 ][DEBUG] [2360325] [Task.hpp] [14] - 我是一个推送数据到服务器的一个任务, 我正在被执行[Thread -6] [2025-02-04 09:54:55 ][INFO] [2360325] [ThreadPool.hpp] [51] - Thread-6 handled a task successfully Thread-7 handled a task successfully... [2025-02-04 14:40:58 ][INFO] [2368011] [ThreadPool.hpp] [43] - Thread GetInstance success... this is a task [2025-02-04 14:41:01 ][INFO] [2368011] [ThreadPool.hpp] [64] - Thread
Thread-2 Sleep start : Thread-1 Sleep end : Thread-1 -----分割线----- Wait start : Thread-5 Wait start : Thread -6 Wait start : Thread-8 Wait start : Thread-7 Wait start : Thread-9 Wait end :Thread-6 Wait end :Thread