了解同步(Understanding synchronized)
鉴于此代码:
public class Messager implements Runnable { public static void main(String[] args) { new Thread(new Messager("Wallace")).start(); new Thread(new Messager("Gromit")).start(); } private String name; public Messager(String name) { this.name = name; } public void run() { message(1); message(2); } private synchronized void message(int n) { System.out.print(name + "-" + n + " "); } }
我知道
synchronized
关键字使线程依赖于对象的锁。 问题:a)一旦标记为
synchronized
的方法完成,锁就会被释放吗? 或者一旦线程的run()
方法完成b)我可以确保任何一个线程将打印其名称并且1 2
先于另一个线程打印吗?Given this code:
public class Messager implements Runnable { public static void main(String[] args) { new Thread(new Messager("Wallace")).start(); new Thread(new Messager("Gromit")).start(); } private String name; public Messager(String name) { this.name = name; } public void run() { message(1); message(2); } private synchronized void message(int n) { System.out.print(name + "-" + n + " "); } }
I understand that the
synchronized
keyword makes the thread dependent on the object's lock. Questions:a) Is the lock released as soon as the method marked as
synchronized
finishes? Or as soon as the thread'srun()
method finishes b) Can I ensure that any one of the threads will print its name and1 2
before the other?
原文:https://stackoverflow.com/questions/1897295
最满意答案
有很多论坛都是这样做的。 就个人而言,我不喜欢它,主要是因为如果你在文件中出错,整个网站都会被破坏,直到你修复它为止。
我喜欢每个部分的分离,但我想它有其优点。
这可能对维护很不利,因为您无法轻松禁用网站的某个部分进行更新。
速度:我不确定是否诚实。
安全性:您可以完成完全相同的安全设置,但只需对文件添加安全检查,然后在所有页面中包含该文件。
There are many forums that do this. Personally, I don't like it, mainly because if you make an error in the file, the entire site is broken until you fix it.
I like separation of each part, but I guess it has its plusses.
It's likely bad for maintenance, as you can't easily disable a section of your site for an update.
Speed: I'm not sure to be honest.
Security: You could accomplish the exact same security settings but just adding a security check to a file and then including that file in all your pages.
相关问答
更多-
保护PHP脚本免受csrf ...没有PHP会话(跨站点)(protect php script against csrf…without php session (cross site))[2022-12-06]
与GET请求相比,POST请求更难以伪造,因此您可以随意使用,这很不错。 只需确保您的脚本中没有使用$ _REQUEST。 你不能在这里使用会话,但原则是相同的 - 你必须在表单和PHP脚本之间实现某种“握手”。 如果会议不是一种选择,有几种不同的方法。 最简单的方法是检查http引用。 如果表单位于http并且脚本位于https下,则此操作无效,并且还可以使用打开的重定向漏洞进行克服。 另一种方法是验证码。 我知道,这些天不是用户友好或时尚,但这会使请求伪造更加困难,因为黑客无法在没有任何用户输入的情况下 ... -
我的ajax脚本在一个div中加载我的整个index.php站点(My ajax script is loading my entire index.php site within a single div)[2022-09-21]
按照@ lethal-guitar - xmlhttp.open(“GET”,“/ index.php?page = getList&q =”+ str,true); as per @lethal-guitar - xmlhttp.open("GET","/index.php?page=getList&q="+str,true); -
使用PHP设置会话时,如何使其成为整个站点的全局?(When setting a session with PHP, how do you make it global to the entire site?)[2022-08-29]
您不仅限于一个会话变量,您可以根据需要拥有多个会话变量。 session_start(); if ( !isset($_SESSION['widget']) ) { $_SESSION['widget'] = 'i am changed only if there isnt already a widget session var'; } $_SESSION['someOtherVar'] = 'i am being changed on every page'; You are not limi ... -
一般而言,如果可能的话,在任意站点上可靠地覆盖概要文件名称的所有可能的任意位置将是非常困难的。 主要问题是您无法预测目标网站上的HTML布局。 解决该问题的一种可能的替代方式是特别是从HTML解析切换到自然语言处理和命名实体识别 。 很少有工具可供选择 - 来自nltk的StanfordNERTagger , spacy等。 这是一个使用nltk的示例( 这个答案应该有助于设置): import nltk import requests from bs4 import BeautifulSoup from ...
-
RewriteEngine on RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z]+)$ index.php/$2?site=$1 [L,E] RewriteEngine on RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z]+)$ index.php/$2?site=$1 [L,E]
-
有很多论坛都是这样做的。 就个人而言,我不喜欢它,主要是因为如果你在文件中出错,整个网站都会被破坏,直到你修复它为止。 我喜欢每个部分的分离,但我想它有其优点。 这可能对维护很不利,因为您无法轻松禁用网站的某个部分进行更新。 速度:我不确定是否诚实。 安全性:您可以完成完全相同的安全设置,但只需对文件添加安全检查,然后在所有页面中包含该文件。 There are many forums that do this. Personally, I don't like it, mainly because if ...
-
使用new DomDocument加载文档会很慢。 想象一下,你告诉别人为你记住一本书,你真正关心的是页面的标题。 你让他们经历了很多工作,你可以得到答案。 当您将内容作为原始字符串接收时,在其上运行preg_match以获取值,应该相当快,特别是因为您知道它是og:site_name元标记的一部分。 我希望这有帮助! 更新 我还会更进一步,只检索前1000个字符,这样你就不会拉入整个文档。 由于您正在对其进行正则表达式搜索,因此可以绕过所有XML解析。 如果您需要获取更多信息,那么您可能无法拉动整个文档。 ...
-
是: 我目前必须通过FTP来做到这一点,但其繁琐的B / C我不得不打开每个目录并将其复制到它。 所以如果我有30个网站需要更新,那么非常耗时。 我想只列出每个站点旁边都带有复选框的站点列表(以及“全选”切换),然后在所有站点上单击运行更新) 基本上你需要编写这些FTP动作的脚本,并提供一些关于什么路径和什么文件的逻辑。 然后,您可以使用简单的前端对整个事物进行设计,并使用复选框列出您的网站进行选择。 似乎并不困难,只需要让FTP路径遍历工作并将文件夹下来即可。 Yes: I currently have ...
-
您需要将此cURL参数添加到现有集中,因为您正在访问HTTPs URL。 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 来自文档...... 设置CURLOPT_SSL_VERIFYPEER,FALSE以阻止cURL验证对等方的证书。 EDIT :不,你根本不需要django。 如果您只想从PHP执行Python脚本 - 假设您已编写脚本并将其存储在某处: 首先,将Python脚本的执行权限分配给运行PHP代码的用户。 通常,这是运行Apache的用户。 通常这称为www-data或apache或类似的东西。 该用户将列在Apache配置文件中。 然后,在你的PHP方面,你真正需要的只是exec : No, you do n ...
相关文章
更多- 与synchronized有关的线程同步问题的一点非常规情况
- 一步一步掌握线程机制(三)---synchronized和volatile的使用
- \ 关于业务逻辑 我是否需要synchronized 方法 困惑?
- 一步一步掌握线程机制(四)---同步方法和同步块
- 新手问一个线程同步问题
- 请问何为“同步流程”
- 数据同步工具 DataX 的使用
- $.getJSON同步请求的解决方法
- 基于C#的UDP协议的同步实现
- 荐 Solr索引数据同步ReplicationHandler
最新问答
更多- 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
- 如何打破按钮上的生命周期循环(How to break do-while loop on button)
- C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
- 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
- 如何并排放置两个元件?(How to position two elements side by side?)
- 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
- 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
- Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
- 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
- 电脑高中毕业学习去哪里培训
- 电脑系统专业就业状况如何啊?
- IEnumerable
linq表达式(IEnumerable linq expressions) - 如何在Spring测试中连接依赖关系(How to wire dependencies in Spring tests)
- Solr可以在没有Lucene的情况下运行吗?(Can Solr run without Lucene?)
- 如何保证Task在当前线程上同步运行?(How to guarantee that a Task runs synchronously on the current thread?)
- 在保持每列的类的同时向数据框添加行(Adding row to data frame while maintaining the class of each column)
- 的?(The ? marks in emacs/haskell and ghc mode)
- 一个线程可以调用SuspendThread传递自己的线程ID吗?(Can a thread call SuspendThread passing its own thread ID?)
- 延迟socket.io响应,并“警告 - websocket连接无效”(Delayed socket.io response, and “warn - websocket connection invalid”)
- 悬停时的图像转换(Image transition on hover)
- IIS 7.5仅显示homecontroller(IIS 7.5 only shows homecontroller)
- 没有JavaScript的复选框“关闭”值(Checkbox 'off' value without JavaScript)
- java分布式框架有哪些
- Python:填写表单并点击按钮确认[关闭](Python: fill out a form and confirm with a button click [closed])
- PHP将文件链接到根文件目录(PHP Linking Files to Root File Directory)
- 我如何删除ListView中的项目?(How I can remove a item in my ListView?)
- 您是否必须为TFS(云)中的每个BUG创建一个TASK以跟踪时间?(Do you have to create a TASK for every BUG in TFS (Cloud) to track time?)
- typoscript TMENU ATagParams小写(typoscript TMENU ATagParams lowercase)
- 武陟会计培训类的学校哪个好点?
- 从链接中删除文本修饰(Remove text decoration from links)