小编bcs*_*001的帖子

Java是否隐式通知等待线程?

我写了一个永远不会停止的测试应用程序.它发布t.wait()(t是一个Thread对象),但我从不调用notify.为什么这段代码结束了?尽管主线程正在同步t,但生成的线程会运行,因此它不会锁定此对象.

public class ThreadWait {
    public static void main(String sArgs[]) throws InterruptedException {
        System.out.println("hello");
        Thread t = new MyThread();
        synchronized (t) {
            t.start();
            Thread.sleep(5000);
            t.wait();
            java.lang.System.out.println("main done");
        }
    }
}

class MyThread extends Thread {
    public void run() {
        for (int i = 1; i <= 5; i++) {
            java.lang.System.out.println("" + i);
            try {
                Thread.sleep(500);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是主线程等待5秒,在此期间工作人员给出其输出.然后在5秒钟结束后,程序退出.t.wait()不等 如果主线程不会睡5秒钟(注释这一行),那么t.wait() …

java multithreading

6
推荐指数
2
解决办法
1033
查看次数

Java:这个类HashMap方法的含义是什么?

class MyObject {
    int field;
    public void setField(int arg1) { 
        this.field = arg1;
    }
} 

HashMap<String, MyObject> map;
... 
... // put some MyObjects in the map with strings as keys
...
for (MyObject object : map.values()) {
    object.setField(12345);
}
Run Code Online (Sandbox Code Playgroud)

我在循环中对对象所做的更改是在地图中的相同对象上进行的?

指南说明了这个values()方法

返回此映射中包含的值的Collection视图.该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然.

"更改地图"是否意味着"对映射对象的更改"?那么这种setField方法可以改变地图中的对象吗?

java dictionary

4
推荐指数
1
解决办法
81
查看次数

使用 vb.net 通过 CC 和 BCC 发送电子邮件

这是使用 vb.net 发送电子邮件的代码片段:

Imports System.Net.Mail
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim SmtpServer As New SmtpClient()
            Dim mail As New MailMessage()
            SmtpServer.Credentials = New _
        Net.NetworkCredential("username@gmail.com", "password")
            SmtpServer.Port = 587
            SmtpServer.Host = "smtp.gmail.com"
            mail = New MailMessage()
            mail.From = New MailAddress("YOURusername@gmail.com")
            mail.To.Add("TOADDRESS")
            mail.Subject = "Test Mail"
            mail.Body = "This is for testing SMTP mail from GMAIL"
            SmtpServer.Send(mail)
            MsgBox("mail send")
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End …
Run Code Online (Sandbox Code Playgroud)

vb.net email smtp

3
推荐指数
1
解决办法
1万
查看次数

为什么使用流的代码在Java 9中的运行速度比Java 8快得多?

我在解决Euler项目的问题205时发现了这一点.问题如下:

彼得有九个四面(金字塔)骰子,每个骰子都有编号为1,2,3,4的面孔.科林有六个六面(立方体)骰子,每个骰子都有编号为1,2,3,4,5,6的面孔.

彼得和科林掷骰子并比较总数:总得分最高.如果总数相等,结果是平局.

金字塔皮特击败立方科林的可能性是多少?将您的答案四舍五入到0.abcdefg形式的七位小数

我用Guava写了一个天真的解决方案:

import com.google.common.collect.Sets;
import com.google.common.collect.ImmutableSet;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;

public class Problem205 {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        List<Integer> peter = Sets.cartesianProduct(Collections.nCopies(9, ImmutableSet.of(1, 2, 3, 4)))
                .stream()
                .map(l -> l
                        .stream()
                        .mapToInt(Integer::intValue)
                        .sum())
                .collect(Collectors.toList());
        List<Integer> colin = Sets.cartesianProduct(Collections.nCopies(6, ImmutableSet.of(1, 2, 3, 4, 5, 6)))
                .stream()
                .map(l -> l
                        .stream()
                        .mapToInt(Integer::intValue)
                        .sum())
                .collect(Collectors.toList());

        long startTime2 = System.currentTimeMillis();
        // IMPORTANT BIT HERE! v
        long solutions = …
Run Code Online (Sandbox Code Playgroud)

java performance java-8 java-stream java-9

3
推荐指数
1
解决办法
1145
查看次数

android java setOnClickListener错误

我正在尝试按下btnExecute时执行例行程序.我在每个onClick btnxxx.setOnClickListener上收到错误,声明"新的View.OnClickListener(){}类型必须实现继承的抽象方法View.OnClickListener.onClick(View).请帮我理解什么是错的.

package com.androidbook.triviaquiz8;

import android.os.Bundle;
import android.os.Environment;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;

public class QuizHelpActivity extends QuizActivity {
    private EditText m1_sqs1;
    private EditText m1_rs1;
    private EditText m1_rs2;
    private EditText m1_cd;
    private EditText m1_els1;
    private EditText m1_els2;

    private EditText m1_sa_in;
    private EditText m1_sa_ft;
    private EditText m1_sa_mm;
    private EditText m1_sa_m;

    private EditText m1_ed_in;
    private EditText m1_ed_ft;
    private EditText m1_ed_mm;
    private EditText m1_ed_m;

    private Spinner m1_sqs1_spinner;
    private Spinner m1_rs1_unit;
    private Spinner m1_rs2_unit;
    private …
Run Code Online (Sandbox Code Playgroud)

java android

2
推荐指数
1
解决办法
3万
查看次数

在 Java 2D 数组中查找最小值和最大值

我一直在努力解决这个问题,需要一些帮助。我需要找到最小/最大值并将它们打印出来用于多维数组。这是我尝试过的两种方法。

import java.util.*;

class MinMax {
    public static void main(String[] args) {
        int[][] data = {{3, 2, 5},
                {1, 4, 4, 8, 13},
                {9, 1, 0, 2},
                {0, 2, 6, 3, -1, -8}};
        Arrays.sort(data);
        System.out.println("Minimum = " + data[0]);
        System.out.println("Maximum = " + data[data.length - 1]);
    }
}
Run Code Online (Sandbox Code Playgroud)

此版本符合但不运行。

import java.util.*;

class MinMax {
    public static void main(String[] args) {
        int[][] data = {{3, 2, 5},
                {1, 4, 4, 8, 13},
                {9, 1, 0, 2},
                {0, 2, 6, 3, -1, …
Run Code Online (Sandbox Code Playgroud)

java arrays loops max min

2
推荐指数
2
解决办法
5万
查看次数

Java:测试字符串是否以换行符结尾

我想执行一个substring.equals("\n"). 在下面的代码中,我取最后一个字符并检查它是否是换行符。

String substring = nextResult.length() > 1 ? nextResult.substring(nextResult.length() - 1) : nextResult;            
return substring.equals("\n") ?  /* do stuff */ : /* do other stuff */;
Run Code Online (Sandbox Code Playgroud)

我只取最后一个字符因为Java采用\n为一体char。但是,从我所见,substring.equals("\n")返回true空格 ( " "),我认为是制表符 ( \t)。是这样吗?

如何正确检查字符串的结尾是否为换行符,或者至少该字符串是否为换行符?

java string

1
推荐指数
1
解决办法
9245
查看次数

为什么Object []存储原语?

Object[]可以存储来自任何类的任何对象,因为Java中的每个类都会扩展java.lang.Object.

我不认为原语会延伸Object,为什么我们可以将它们存储起来如下?

Object[] obj_arr = {1, 2, 1.2, 'a', false, new MyClass(), null};
Run Code Online (Sandbox Code Playgroud)

问题是为什么原语可以存储在Object数组中并且在上面的代码中是否发生了自动装箱

java primitive autoboxing

1
推荐指数
1
解决办法
250
查看次数

在 JTable 中的单元格之间添加边框

我试图将 JTable 显示为网格,单元格之间有线条。不过,我只能在单个单元格中添加边框,这看起来永远不正确;如果我添加完整的边框,我会得到一堆断开的框,看起来很丑陋和错误。使用 MatteBorders(如下面的代码)看起来会好一些,但会导致边界线不完全相交的间隙。

public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
    Component stamp = super.prepareRenderer(renderer, row, column);
    int top = 1;
    int left = 1;
    int bottom = row == 7 ? 1 : 0; //Grid is always 8x8, this ensures the bottom/right will have full borders.
    int right = column == 7 ? 1 : 0;
    MatteBorder border = new MatteBorder(top, left, bottom, right, Color.BLACK);
    if (stamp instanceof JComponent) {
        ((JComponent) stamp).setBorder(border);
    }
    return stamp;
}
Run Code Online (Sandbox Code Playgroud)

我觉得必须有某种方法可以正确地做到这一点,这样我才能在单元格元素之间获得网格线。我错过了什么?如果不出意外,有没有办法让 …

java swing border jtable

1
推荐指数
1
解决办法
4244
查看次数

添加方法时java中的错误

我读过你可以为对象添加额外的方法,或者以这种方式覆盖抽象方法,但是我有一个错误.你能告诉我这是否可能或我做错了什么?

public abstract class Pesti {
    public abstract void ud();
}

public class EX2 {
    public static void main(String[] args) {
        Pesti p = new Pesti() {
            public void ud() {
                System.out.println("Pestele este ud!");
            }

            public void inn() {
                System.out.println("Innoata!");
            }
        };
        p.ud();
        p.inn();
    }
}
Run Code Online (Sandbox Code Playgroud)

它告诉我它找不到方法inn.

java

1
推荐指数
1
解决办法
54
查看次数