第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

new Thread().start內(nèi)部類的使用場(chǎng)景?

new Thread().start內(nèi)部類的使用場(chǎng)景?

繁華開滿天機(jī) 2019-03-12 17:18:06
下面的這個(gè)方法是發(fā)郵件的抽象出來(lái)的一個(gè)公用方法:String[] to 表示收件人列表;subject  郵件主題;templateName 郵件末班,用velocity寫的,Map params 參數(shù),用來(lái)填充velocity中的某些字段取值的public void sendHtmlWithTemplate(String[] to, String subject, String templateName, Map<String, Object> params) {    final MimeMessage mimeMessage = mailSender.createMimeMessage();    try {        final MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);        messageHelper.setFrom(simpleMailMessage.getFrom());        if (ENV_ONLINE.equals(environment)) {            messageHelper.setTo(to);            messageHelper.setSubject(subject);        } else {            messageHelper.setTo(adminEmail);            messageHelper.setSubject(subject + Arrays.asList(to));        }        messageHelper.setSentDate(new Date());        final String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, "UTF-8",                                                                           params);        final String[] logTo = to;        messageHelper.setText(content, true);        new Thread() {            @Override            public void run() {                mailSender.send(mimeMessage);                logger.error("Mailsentto: " + Arrays.asList(logTo) + "\nContent: " + content);            }        }.start();    } catch (Exception e) {        logger.error("emailServiceError error:" + e.getMessage(), e);    }}在上面的發(fā)郵件的代碼中,使用了內(nèi)部類如下:new Thread() {    @Override    public void run() {        mailSender.send(mimeMessage);        logger.error("Mailsentto: " + Arrays.asList(logTo) + "\nContent: " + content);    }}.start();我覺(jué)得在這個(gè)地方做這個(gè)控制是很恰當(dāng)?shù)陌?,為什么team leader讓我刪掉這個(gè)new Thread()的部分。原話:“把new Thread全部刪掉,這些郵件發(fā)送不了的bug都沒(méi)有暴露出來(lái); 郵件發(fā)送模塊的代碼采用異步發(fā)送方式,失去異常事務(wù)回滾的能力,new Thread要全部刪除;” 不懂是什么意思???問(wèn)題:1.為什么要去掉new Thread()?2.在什么樣的并發(fā)業(yè)務(wù)場(chǎng)景下,需要使用new Thread()這樣的方式?有沒(méi)有更好的解決方法?3.在并發(fā)場(chǎng)景下,使用new Thread().start()的方式有什么弊端?每次new Thread新建對(duì)象性能會(huì)很差么?郵件服務(wù)也是當(dāng)觸發(fā)某個(gè)業(yè)務(wù)規(guī)則的時(shí)候,可能需要大量發(fā)送一下郵件,用線程池好不好呢?
查看完整描述

4 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

匿名對(duì)象很方便,但匿名對(duì)象也是魔鬼,使用不好就能讓你的應(yīng)用崩塌。就拿你這里做例子,如果你沒(méi)有控制好發(fā)送郵件的參數(shù),比如發(fā)送時(shí)超時(shí)了就繼續(xù)等待,那這個(gè)線程可就變成了孤魂野鬼了,找也找不到,關(guān)也關(guān)不掉,這是一個(gè)程序員該做的事情嗎?
你問(wèn)為何你的頭讓你把這里去掉,我只能說(shuō)是他還不夠相信的你能力,所以不敢讓你操縱這個(gè)魔鬼。
你問(wèn)什么場(chǎng)景下適合,我只能說(shuō)沒(méi)有適合的場(chǎng)景,只有有能力的人。

查看完整回答
反對(duì) 回復(fù) 2019-04-19
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果要發(fā)大量的郵件,可以做個(gè)隊(duì)列,線程太多的話,恐怕不太好。


查看完整回答
反對(duì) 回復(fù) 2019-04-19
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果你有寫過(guò)js,你可以理解這里的new Thread()相當(dāng)于ajax請(qǐng)求,是屬于異步行為,在這個(gè)線程任務(wù)還沒(méi)執(zhí)行完之前,方法已經(jīng)返回給調(diào)用方了(而且不會(huì)拋出發(fā)送郵件產(chǎn)生的異常),這也就是你leader說(shuō)的“這些郵件發(fā)送不了的bug都沒(méi)有暴露出來(lái)”。

考慮并發(fā)量大的話可以采用redis+kafka(或其他消息組件),用消息的形式去通知郵件服務(wù)發(fā)送郵件。


查看完整回答
反對(duì) 回復(fù) 2019-04-19
  • 4 回答
  • 0 關(guān)注
  • 7283 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)