public class Test {
public static void main(String[] args) throws Exception {
A aObject = new A();
ReferenceQueue<A> queue = new ReferenceQueue<>();
PhantomReference<A> weak = new PhantomReference<>(aObject, queue);
aObject = null;
System.gc();
TimeUnit.SECONDS.sleep(1);
System.out.println(queue.poll());
}
}
class A{
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
System.out.println("finalize");
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
finalize
null
Run Code Online (Sandbox Code Playgroud)
但如果我删除A类中的finalize方法,结果是:
java.lang.ref.PhantomReference@5b2c9e5d
Run Code Online (Sandbox Code Playgroud)
所以,结果显示当我覆盖finalize方法时,弱对象没有被放入引用队列,那是因为aObject复活了吗?但我在finalize方法中没有做任何事情
Disruptor github地址为:https://github.com/LMAX-Exchange/disruptor
我对其进行了一个简单的测试,如下所示:
public class DisruptorMain {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) throws Exception {
class Element {
private int value;
public int get() {
return value;
}
public void set(int value) {
this.value = value;
}
}
ThreadFactory threadFactory = new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
return new Thread(r, "simpleThread");
}
};
EventFactory<Element> factory = new EventFactory<Element>() {
@Override
public Element newInstance() {
return new Element();
}
};
EventHandler<Element> handler = …Run Code Online (Sandbox Code Playgroud) 我在 android studio 中将 gradle 与 android 项目一起使用,我想gradlew在 android studio 的终端中运行命令,而我收到 gradlew command not found 错误。
我的 gradle 包装器在目录中:
"C:\Users\Administrator\.gradle\wrapper\dists\gradle-4.1-all\bzyivzo6n839fup2jbap0tjew\gradle-4.1\bin"
在这个目录中,有以下内容:
我试过"gradle -v"
在这个目录中运行
,它工作正常。
但是当我试图跑
gradle wrapper --gradle-version 4.1
Run Code Online (Sandbox Code Playgroud)
我有错误?
“在任务':wrapper'的配置中发现了一些问题。无法写入文件'C:\Users\Administrator.gradle\wrapper\dists\gradle-4.1-all\bzyivzo6n839fup2jbap0tjew\gradle-4.1\bin\gradle\wrapper \gradle-wrapper.jar' 为属性 'jarFile' 指定,作为祖先 'C:\Use rs\Administrator.gradle\wrapper\dists\gradle-4.1-all\bzyivzo6n839fup2jbap0tjew\gradle-4.1\bin\gradle' 不是一个目录。”
我的项目在目录中D:\ASWorkspace\MyApp,我很困惑如果我想执行gradlew命令,我应该在哪个目录执行它?在我的 android 项目或 gradle 项目中?以及如何正确执行它
当我在android studio中创建一个新的android项目时,在项目的根目录下,build.gradle文件有一个这样的任务:
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
我在终端用gradlew clean命令运行任务,发现项目根目录下的build目录被删除了,模块中的build目录也被删除了,为什么?我的意思是 rootProject.buildDir 不应该在模块中包含构建目录