file-type

thread.js API教程:ES6线程在现代浏览器中的应用

ZIP文件

下载需积分: 50 | 5KB | 更新于2025-03-10 | 73 浏览量 | 1 下载量 举报 收藏
download 立即下载
### 知识点详解 #### 1. 什么是thread.js `thread.js` 是一个轻量级的线程API,它提供了一个简易的方式来创建和管理JavaScript线程。这种API利用了JavaScript的ES6(ECMAScript 2015)特性,并且在支持的现代浏览器(如Chrome、Firefox和Edge)中使用Web Worker作为底层技术。Web Worker允许在浏览器的后台线程中运行JavaScript代码,从而不阻塞主线程的执行,这对于执行耗时的任务非常有用,可以显著提升应用程序的性能。 尽管`thread.js`拥有强大的性能优势,但需要注意的是,Safari浏览器目前还不支持`let`和`const`这两个ES6的变量声明语法,因此在使用时可能会遇到兼容性问题。解决方法是在代码中使用`var`语句代替,以确保在Safari中能够正常运行。 #### 2. 如何使用thread.js 使用`thread.js`非常简单,它主要提供了一个API:`Thread.spawn`。这个API用于创建一个新的线程,并且它只接收一个参数,即一个对象,这个对象通常包含三个属性: - `data`:表示传递给线程的数据。 - `move`:一个数组,包含那些可传递(transferable)的对象。通过传递可传递对象,可以将对象的所有权转移给新创建的线程,从而避免拷贝,提高效率。 - `fn`:一个函数,该函数将在新创建的线程中执行,并且会接收到通过`data`属性传递的数据。 `Thread.spawn`会返回一个Promise对象,这意味着你可以使用`.then()`和`.catch()`等方法来处理异步执行的结果。重要的一点是,你必须注意`fn`函数将在一个独立的执行环境中运行,它与主线程的上下文是隔离的,因此你不能在`fn`函数中直接引用主线程的变量或对象。 #### 3. 与Chrome/火狐的集成 由于`thread.js`使用Web Worker作为其实现的基础,因此它能够无缝集成到最新的Chrome和Firefox浏览器中。在这些浏览器中,`thread.js`能够充分利用多核处理器的能力,将计算密集型任务分配到后台线程,从而让主线程更加专注于处理用户界面和交互任务。 #### 4. JavaScript标签 这个文件的标签是“JavaScript”,意味着`thread.js`是专门为JavaScript编程语言设计的。JavaScript是网页开发中广泛使用的一门脚本语言,它支持多种编程范式,包括面向对象、命令式和函数式编程。Web Worker和`thread.js`都是JavaScript异步编程的重要组成部分,它们帮助开发者在编写复杂或性能要求较高的应用时保持代码的响应性和效率。 #### 5. 压缩包子文件的文件名称列表 文件名称`threads.js-master`表明这是一个可能的GitHub项目仓库的主文件。通常,在GitHub上以“-master”结尾的名称表示这是项目的主分支或者主版本。考虑到文件的标题和描述,此项目可能是`thread.js`的一个开源版本或者实现,意味着开发者可以自由地查看源码、使用和贡献代码。 --- 在掌握了`thread.js`的基本概念、使用方法以及在不同浏览器中的支持情况后,开发者可以更有效地利用Web Worker技术来提升应用程序的性能。此外,理解`thread.js`与JavaScript的关系以及如何将其应用到实际项目中,对任何有志于深入学习前端开发技术的开发者而言,都是十分宝贵的。

相关推荐

filetype

aurora@aurora:~/rs485_static_ws$ catkin_make \ > -DCMAKE_PREFIX_PATH=/opt/ros/noetic_static \ > -DCMAKE_BUILD_TYPE=Release \ > -DBoost_USE_STATIC_LIBS=ON Base path: /home/aurora/rs485_static_ws Source space: /home/aurora/rs485_static_ws/src Build space: /home/aurora/rs485_static_ws/build Devel space: /home/aurora/rs485_static_ws/devel Install space: /home/aurora/rs485_static_ws/install #### #### Running command: "cmake /home/aurora/rs485_static_ws/src -DCMAKE_PREFIX_PATH=/opt/ros/noetic_static -DCMAKE_BUILD_TYPE=Release -DBoost_USE_STATIC_LIBS=ON -DCATKIN_DEVEL_PREFIX=/home/aurora/rs485_static_ws/devel -DCMAKE_INSTALL_PREFIX=/home/aurora/rs485_static_ws/install -G Unix Makefiles" in "/home/aurora/rs485_static_ws/build" #### CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as project(ProjectName) near the top of the file, but after cmake_minimum_required(). CMake is pretending there is a "project(Project)" command on the first line. This warning is for project developers. Use -Wno-dev to suppress it. -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using CATKIN_DEVEL_PREFIX: /home/aurora/rs485_static_ws/devel -- Using CMAKE_PREFIX_PATH: /opt/ros/noetic_static -- This workspace overlays: /opt/ros/noetic_static -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.10", minimum required is "3") -- Using PYTHON_EXECUTABLE: /usr/bin/python3 -- Using Debian Python package layout -- Found PY_em: /usr/lib/python3/dist-packages/em.py -- Using empy: /usr/lib/python3/dist-packages/em.py -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/aurora/rs485_static_ws/build/test_results -- Forcing gtest/gmock from source, though one was otherwise available. -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") -- Found Threads: TRUE -- Using Python nosetests: /usr/bin/nosetests3 -- catkin 0.8.12 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 1 packages in topological order: -- ~~ - rs485_node -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin package: 'rs485_node' -- ==> add_subdirectory(rs485_node) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: system filesystem thread -- rs485_node: 3 messages, 0 services -- Configuring done -- Generating done -- Build files have been written to: /home/aurora/rs485_static_ws/build #### #### Running command: "make -j8 -l8" in "/home/aurora/rs485_static_ws/build" #### Scanning dependencies of target std_msgs_generate_messages_cpp Scanning dependencies of target _rs485_node_generate_messages_check_deps_DualRS485Command Scanning dependencies of target _rs485_node_generate_messages_check_deps_backangle Scanning dependencies of target std_msgs_generate_messages_lisp Scanning dependencies of target std_msgs_generate_messages_nodejs Scanning dependencies of target std_msgs_generate_messages_eus Scanning dependencies of target _rs485_node_generate_messages_check_deps_RS485Command Scanning dependencies of target std_msgs_generate_messages_py [ 0%] Built target std_msgs_generate_messages_cpp [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_eus [ 0%] Built target std_msgs_generate_messages_py [ 0%] Built target _rs485_node_generate_messages_check_deps_backangle [ 0%] Built target _rs485_node_generate_messages_check_deps_DualRS485Command [ 0%] Built target _rs485_node_generate_messages_check_deps_RS485Command Scanning dependencies of target rs485_node_generate_messages_lisp Scanning dependencies of target rs485_node_generate_messages_nodejs Scanning dependencies of target rs485_node_generate_messages_py Scanning dependencies of target rs485_node_generate_messages_cpp Scanning dependencies of target rs485_node_generate_messages_eus [ 12%] Generating Javascript code from rs485_node/DualRS485Command.msg [ 12%] Generating Lisp code from rs485_node/RS485Command.msg [ 12%] Generating Lisp code from rs485_node/backangle.msg [ 16%] Generating Javascript code from rs485_node/RS485Command.msg [ 25%] Generating EusLisp code from rs485_node/RS485Command.msg [ 25%] Generating Lisp code from rs485_node/DualRS485Command.msg [ 29%] Generating Python from MSG rs485_node/RS485Command [ 33%] Generating C++ code from rs485_node/RS485Command.msg [ 41%] Generating Python from MSG rs485_node/DualRS485Command [ 41%] Generating Python from MSG rs485_node/backangle [ 45%] Generating Javascript code from rs485_node/backangle.msg [ 50%] Generating EusLisp code from rs485_node/DualRS485Command.msg [ 50%] Built target rs485_node_generate_messages_lisp [ 54%] Generating C++ code from rs485_node/DualRS485Command.msg [ 58%] Generating EusLisp code from rs485_node/backangle.msg [ 58%] Built target rs485_node_generate_messages_nodejs [ 62%] Generating EusLisp manifest code for rs485_node [ 66%] Generating C++ code from rs485_node/backangle.msg [ 70%] Generating Python msg __init__.py for rs485_node [ 70%] Built target rs485_node_generate_messages_cpp [ 70%] Built target rs485_node_generate_messages_eus [ 70%] Built target rs485_node_generate_messages_py Scanning dependencies of target rs485_node_generate_messages Scanning dependencies of target rs485_node_lib [ 70%] Built target rs485_node_generate_messages [ 75%] Building CXX object rs485_node/CMakeFiles/rs485_node_lib.dir/src/serial_port.cpp.o [ 79%] Building CXX object rs485_node/CMakeFiles/rs485_node_lib.dir/src/protocol_handler.cpp.o [ 83%] Linking CXX static library /home/aurora/rs485_static_ws/devel/lib/librs485_node_lib.a [ 83%] Built target rs485_node_lib Scanning dependencies of target angle_publisher_node Scanning dependencies of target rs485_node [ 91%] Building CXX object rs485_node/CMakeFiles/angle_publisher_node.dir/src/angle_publisher_node.cpp.o [ 91%] Building CXX object rs485_node/CMakeFiles/rs485_node.dir/src/rs485_node.cpp.o In file included from /opt/ros/noetic_static/include/ros/ros.h:40, from /home/aurora/rs485_static_ws/src/rs485_node/src/rs485_node.cpp:1: /home/aurora/rs485_static_ws/src/rs485_node/src/rs485_node.cpp: In lambda function: /home/aurora/rs485_static_ws/src/rs485_node/src/rs485_node.cpp:65:22: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 9 has type ‘rs485_node::backangle_<std::allocator<void> >::_circleAngle_type’ {aka ‘unsigned int’} [-Wformat=] 65 | ROS_INFO("电机id=%d, 其单圈圈角度读数为%ld", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 | m.id, m.circleAngle); | ~~~~~~~~~~~~~ | | | rs485_node::backangle_<std::allocator<void> >::_circleAngle_type {aka unsigned int} /opt/ros/noetic_static/include/ros/console.h:351:165: note: in definition of macro ‘ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER’ 351 | ole_define_location__loc.logger_, __rosconsole_define_location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__) | ^~~~~~~~~~~ /opt/ros/noetic_static/include/ros/console.h:390:7: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION’ 390 | ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/noetic_static/include/ros/console.h:575:35: note: in expansion of macro ‘ROS_LOG_COND’ 575 | #define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__) | ^~~~~~~~~~~~ /opt/ros/noetic_static/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’ 110 | #define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) | ^~~~~~~ /home/aurora/rs485_static_ws/src/rs485_node/src/rs485_node.cpp:65:13: note: in expansion of macro ‘ROS_INFO’ 65 | ROS_INFO("电机id=%d, 其单圈圈角度读数为%ld", | ^~~~~~~~ /home/aurora/rs485_static_ws/src/rs485_node/src/rs485_node.cpp:65:65: note: format string is defined here 65 | ROS_INFO("电机id=%d, 其单圈圈角度读数为%ld", | ~~^ | | | long int | %d [ 95%] Linking CXX executable /home/aurora/rs485_static_ws/devel/lib/rs485_node/rs485_node [100%] Linking CXX executable /home/aurora/rs485_static_ws/devel/lib/rs485_node/angle_publisher_node /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpthread.a(pthread_create.o): in function `allocate_stack': /build/glibc-fci4Zo/glibc-2.31/nptl/allocatestack.c:525: undefined reference to `_dl_stack_flags' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/allocatestack.c:525: undefined reference to `_dl_stack_flags' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/allocatestack.c:647: undefined reference to `_dl_stack_flags' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/allocatestack.c:647: undefined reference to `_dl_stack_flags' /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpthread.a(nptl-init.o): in function `__pthread_initialize_minimal_internal': /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:335: undefined reference to `_dl_pagesize' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:335: undefined reference to `_dl_pagesize' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:344: undefined reference to `_dl_pagesize' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:360: undefined reference to `_dl_init_static_tls' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:362: undefined reference to `_dl_wait_lookup_done' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:360: undefined reference to `_dl_init_static_tls' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:362: undefined reference to `_dl_wait_lookup_done' /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpthread.a(nptl-init.o): in function `__pthread_get_minstack': /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:393: undefined reference to `_dl_pagesize' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/nptl-init.c:393: undefined reference to `_dl_pagesize' /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpthread.a(unwind.o): in function `_jmpbuf_sp': /build/glibc-fci4Zo/glibc-2.31/nptl/../sysdeps/aarch64/jmpbuf-offsets.h:52: undefined reference to `__pointer_chk_guard_local' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/../sysdeps/aarch64/jmpbuf-offsets.h:52: undefined reference to `__pointer_chk_guard_local' collect2: error: ld returned 1 exit status make[2]: *** [rs485_node/CMakeFiles/rs485_node.dir/build.make:111: /home/aurora/rs485_static_ws/devel/lib/rs485_node/rs485_node] Error 1 make[1]: *** [CMakeFiles/Makefile2:442: rs485_node/CMakeFiles/rs485_node.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpthread.a(unwind.o): in function `_jmpbuf_sp': /build/glibc-fci4Zo/glibc-2.31/nptl/../sysdeps/aarch64/jmpbuf-offsets.h:52: undefined reference to `__pointer_chk_guard_local' /usr/bin/ld: /build/glibc-fci4Zo/glibc-2.31/nptl/../sysdeps/aarch64/jmpbuf-offsets.h:52: undefined reference to `__pointer_chk_guard_local' collect2: error: ld returned 1 exit status make[2]: *** [rs485_node/CMakeFiles/angle_publisher_node.dir/build.make:110: /home/aurora/rs485_static_ws/devel/lib/rs485_node/angle_publisher_node] Error 1 make[1]: *** [CMakeFiles/Makefile2:855: rs485_node/CMakeFiles/angle_publisher_node.dir/all] Error 2 make: *** [Makefile:141: all] Error 2 Invoking "make -j8 -l8" failed

filetype

未启用CSS Modules的情况下在// 引入 path 模块 const path = require('path') // 判断当前环境是否是生产环境 const isProduction = process.env.NODE_ENV === 'production' // 样式单独分离到一个文件中 const MiniCssExtractPlugin = require('mini-css-extract-plugin') // 官方文档:Vue Loader v15 现在需要配合一个 webpack 插件才能正确使用 const VueLoaderPlugin = require("vue-loader/lib/plugin"); // 引入静态资源复制插件 const CopyWebpackPlugin = require('copy-webpack-plugin') // nodejs核心模块,直接使用 const os = require("os"); // cpu核数 const threads = os.cpus().length; // 引入入口文件 const { entry } = require('./setting.js') const webpack = require("webpack") module.exports = { // 打包入口地址 entry: entry, // 模块resolve的规则 resolve: { //自动的扩展后缀,比如一个js文件,则引用时书写可不要写.js extensions: ['.js', '.json', '.css', '.less', '.vue','.jsx'], // 路径别名 alias: { '@': path.resolve(__dirname, '../src'), 'vue$': 'vue/dist/vue.esm.js', "@ht-form-create/element-ui": path.resolve(__dirname, "../src/libs/form-create/packages/element-ui/src"), "@ht-form-create/utils": path.resolve(__dirname, "../src/libs/form-create/packages/utils"), "@ht-form-create/designer": path.resolve(__dirname, "../src/libs/form-designer/src") }, fallback: { process: require.resolve("process/browser") } }, // context 是 webpack entry 的上下文,是入口文件所处的目录的绝对路径,默认情况下是当前根目录。 // 由于我们 webpack 配置文件放于 build 目录下,所以需要重新设置下 context ,使其指向根目录。 context: path.resolve(__dirname, '../'), // 构建目标 target: ['web', 'es5'], // 不同类型模块的处理规则 module: { rules: [ { oneOf: [ // 处理 css、less 文件 { test: /\.css$/i, use: [ isProduction ? MiniCssExtractPlugin.loader : 'style-loader', { loader: 'css-loader', options: { // 是否使用source-map sourceMap: !isProduction, esModule: false } }, { loader: 'postcss-loader', options: { // 是否使用source-map sourceMap: !isProduction } } ] }, { test: /\.less$/i, use: [ isProduction ? MiniCssExtractPlugin.loader : 'style-loader', { loader: 'css-loader', options: { // 是否使用source-map sourceMap: !isProduction, esModule: false } }, { loader: 'postcss-loader', options: { // 是否使用source-map sourceMap: !isProduction } }, 'less-loader' ] }, // 处理sass资源 { test: /\.s[ca]ss$/, use: [ 'style-loader', 'css-loader', 'sass-loader', ] }, // 解析 html 中的 src 路径 // { // test: /\.html$/, // use: 'html-loader' // }, // 对图片资源文件进行处理,webpack5已经废弃了url-loader,改为type { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, type: 'asset', exclude: [path.resolve(__dirname, 'src/assets/imgs')], generator: { filename: 'imgs/[name].[contenthash][ext]' } }, // 对字体资源文件进行处理,webpack5已经废弃了url-loader,改为type { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, type: 'asset', generator: { filename: 'fonts/[name].[contenthash][ext]' } }, // 对音频资源文件进行处理,webpack5已经废弃了url-loader,改为type { test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, type: 'asset', exclude: [path.resolve(__dirname, 'src/assets/medias')], generator: { filename: 'medias/[name].[contenthash][ext]' } }, { test: /\.(m|j)s$/, exclude: /node_modules/, use: [ { loader: 'babel-loader', options: { cacheDirectory: true } }, { loader: "thread-loader", // 开启多进程 options: { workers: threads, // 数量 }, } ] }, { test: /\.(js|jsx)$/, include: [path.resolve(__dirname, "../src"), path.resolve(__dirname, "../src/libs/form-create"), path.resolve(__dirname, "../src/libs/form-designer")], use: [ { loader: "babel-loader", options: { cacheDirectory: true, // 确保包含处理JSX的预设 presets: ["@babel/preset-env", "@vue/babel-preset-jsx"] } }, { loader: "thread-loader", options: { workers: threads } } ] } ] }, // 处理.vue文件 { test: /\.vue$/, use: 'vue-loader' } ] }, watchOptions: { ignored: /node_modules/, }, // 插件 plugins: [ new VueLoaderPlugin(), // 把public的一些静态文件复制到指定位置,排除 html 文件 new CopyWebpackPlugin({ patterns: [ { from: path.resolve(__dirname, '../public'), globOptions: { dot: true, gitignore: true } } ] }), new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify(process.env.NODE_ENV || "development") // 可根据需要添加其他环境变量 // API_URL: JSON.stringify('https://api.example.com') } }) ] } 怎么添加

filetype

[ 1741774308.081 27489:27489 F/com.google.android.webview:sandboxed_process0:org.chromium.content.app.SandboxedProcessruntime.cc:691] Runtime aborting… runtime.cc:691] Dumping all threads without mutator lock held runtime.cc:691] All threads: runtime.cc:691] DALVIK THREADS (13): runtime.cc:691] “ReferenceQueueDaemon” prio=5 tid=10 Waiting runtime.cc:691] | group=“” sCount=1 ucsCount=0 flags=1 obj=0x13c00248 self=0xb40000737183f140 runtime.cc:691] | sysTid=27533 nice=0 cgrp=foreground sched=0/0 handle=0x72df4fa6b0 runtime.cc:691] | state=S schedstat=( 10616720 1112603 4 ) utm=1 stm=0 core=6 HZ=100 runtime.cc:691] | stack=0x72df3f7000-0x72df3f9000 stackSize=1037KB runtime.cc:691] | held mutexes= runtime.cc:691] native: #00 pc 00087e80 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+32) (BuildId: 67302ea8a65f439981b414170c1bd561) runtime.cc:691] native: #01 pc 0025e4d0 /apex/com.android.art.compatible/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks+144) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #02 pc 005696c4 /apex/com.android.art.compatible/lib64/libart.so (art::Monitor::Wait+876) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #03 pc 0056b000 /apex/com.android.art.compatible/lib64/libart.so (art::Monitor::Wait+484) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #04 pc 00227430 /apex/com.android.art.compatible/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #05 pc 0020a990 /apex/com.android.art.compatible/lib64/libart.so (nterp_helper+5648) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #06 pc 000fe136 /apex/com.android.art.compatible/javalib/core-oj.jar (java.lang.Object.wait+2) runtime.cc:691] native: #07 pc 0020a2d4 /apex/com.android.art.compatible/lib64/libart.so (nterp_helper+3924) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #08 pc 000fe11c /apex/com.android.art.compatible/javalib/core-oj.jar (java.lang.Object.wait+4) runtime.cc:691] native: #09 pc 0020a2d4 /apex/com.android.art.compatible/lib64/libart.so (nterp_helper+3924) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #10 pc 0002bf36 /apex/com.android.art.compatible/javalib/core-libart.jar (java.lang.Daemons$ReferenceQueueDaemon.runInternal+70) runtime.cc:691] native: #11 pc 0020a2d4 /apex/com.android.art.compatible/lib64/libart.so (nterp_helper+3924) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #12 pc 0002b0ba /apex/com.android.art.compatible/javalib/core-libart.jar (java.lang.Daemons$Daemon.run+50) runtime.cc:691] native: #13 pc 0020b0f4 /apex/com.android.art.compatible/lib64/libart.so (nterp_helper+7540) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #14 pc 0010efd8 /apex/com.android.art.compatible/javalib/core-oj.jar (java.lang.Thread.run+8) runtime.cc:691] native: #15 pc 002109a4 /apex/com.android.art.compatible/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #16 pc 002545f0 /apex/com.android.art.compatible/lib64/libart.so (art::ArtMethod::Invoke+176) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #17 pc 006883f4 /apex/com.android.art.compatible/lib64/libart.so (art::Thread::CreateCallback+1408) (BuildId: e1393427dc69cc79f778d459522906c5) runtime.cc:691] native: #18 pc 00071c94 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start+196) (BuildId: 67302ea8a65f439981b414170c1bd561) runtime.cc:691] native: #19 pc 00063db0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 67302ea8a65f439981b414170c1bd561) runtime.cc:691] at java.lang.Object.wait(Native method) runtime.cc:691] - waiting on <0x02510269> (a java.lang.Class<java.lang.ref.ReferenceQueue>) runtime.cc:691] at java.lang.Object.wait(Object.java:386)

filetype

javax.script.ScriptException: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method split() on null object at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:219) at org.apache.jmeter.modifiers.UTPJSR223PreProcessor.process(UTPJSR223PreProcessor.java:109) at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:965) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:549) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) at java.lang.Thread.run(Thread.java:748) Caused by: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method split() on null object at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155) ... 8 more Caused by: java.lang.NullPointerException: Cannot invoke method split() on null object at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:43) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:34) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127) at Script83.run(Script83.groovy:24) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317) ... 9 more 这个报错信息是什么意思

止蚀
  • 粉丝: 35
上传资源 快速赚钱